difficultchild: Unterschiede bei JOIN in MySQL4 und MySQL5??

hallo community,
ich habe hier ein problem, welches ich mir nicht erklären kann. vielleicht hat jemand eine idee, wo das problem liegt.
folgender sachverhalt:
ich habe eine anwendung, geschrieben mit php4 und aufgesetzt auf einer MySQL4-DB, alles läuft wunderbar.
jetzt habe ich die anwendung zu testzwecken auf ein XAMPP-System kopiert, dort läuft eine MySQL5-DB, ind die ein Dump der DB eingespielt wurde.
ich lasse den XAMPP mit php4 laufen und bekomme einen MySQL-Fehler angezeigt:
SELECT internet.id_internet FROM internet, rechte LEFT JOIN filelist ON internet.id_internet = filelist.internet_id WHERE internet.pid =39 AND rechte.internet = internet.id_internet AND rechte.user =117 AND filelist.internet_id IS NULL [nativecode=1054 ** Unknown column 'internet.id_internet' in 'on clause']
DB Error: no such field

die eingetragenen werte sind korrekt (wie gesagt: auf dem anderen system läuft die anwendung ja), wenn ich den JOIN rauslösch aus der Abfrage, ist auch die Fehlermeldung weg.
Gibt es vielleicht irgendeinen Unterschied beim Abarbeiten von JOIN zwischen beiden DB-Versionen?

ich dank euch schon mal für eure hilfe

  1. Hallo,

    SELECT internet.id_internet FROM internet, rechte LEFT JOIN filelist ON internet.id_internet = filelist.internet_id WHERE internet.pid =39 AND rechte.internet = internet.id_internet AND rechte.user =117 AND filelist.internet_id IS NULL [nativecode=1054 ** Unknown column 'internet.id_internet' in 'on clause']
    DB Error: no such field

    Das hat mal funktioniert? Also den Fehler hätte ich jetzt auch ausgegeben. Du verbindest eine Tabelle "rechte" via LEFT JOIN mit einer Tabelle "filelist" über die Bedingung "ON internet.id_internet = filelist.internet_id". Die Spalte internet.id_internet ist in keiner der beiden Tabellen zu finden.

    Setze konsequent, auch bei INNER JOINs, auf die ausführliche Schreibweise. Folgendes _könnte_ richtig sein:

    SELECT internet.id_internet
    FROM ((internet LEFT JOIN filelist ON internet.id_internet = filelist.internet_id)
    INNER JOIN rechte ON rechte.internet = internet.id_internet)
    WHERE internet.pid =39 AND rechte.user =117 AND filelist.internet_id IS NULL

    Könnte, weil nicht genau klar wird, was Vorrang hat, der LEFT JOIN zwischen internet und filelist oder der INNER JOIN zwischen internet und rechte. Wobei mich das "WHERE filelist.internet_id IS NULL" vermuten lässt, dass der LEFT JOIN vorrangig ist.

    viele Grüße

    Axel