Axel Richter: Unterschiede bei JOIN in MySQL4 und MySQL5??

Beitrag lesen

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