LEFT JOIN
droom
- datenbank
0 EKKi0 Vinzenz Mai
Hi folks,
ich probiere folgender Ausdruck:
SELECT B.uid FROM A,B LEFT JOIN C ON ( A.pid = C.pid AND C.user =1 ) WHERE A.pid = B.uid
aber ich bekomme die Meldung:
#1054 - Unknown column 'A.pid' in 'on clause'
ich benutze Mysql 5.0.18. Der Ausdruck sollte funktionieren.
vielen Dank.
Mahlzeit droom,
SELECT B.uid FROM A,B LEFT JOIN C ON ( A.pid = C.pid AND C.user =1 ) WHERE A.pid = B.uid
aber ich bekomme die Meldung:
#1054 - Unknown column 'A.pid' in 'on clause'
Anscheinend joint MySQL erst die Tabelle C zur Tabelle B (wie auch explizit angegeben) - und da existiert natürlich noch kein 'A.pid' (da die Tabelle A erst hinterher implizit dazugejoint wird).
Vielleicht solltest Du Dich für eine JOIN-Syntax entscheiden (ich empfehle hier immer die explizite zu nehmen).
ich benutze Mysql 5.0.18. Der Ausdruck sollte funktionieren.
Wer sagt das? ;-)
MfG,
EKKi
Hi EKKi
jau hast Recht, ich habe einfach A und B vertauscht und schon gehts. Korrekt ist also:
SELECT B.uid FROM B,A LEFT JOIN C ON ( A.pid = C.pid AND C.user =1 ) WHERE A.pid = B.uid
ich benutze Mysql 5.0.18. Der Ausdruck sollte funktionieren.
Wer sagt das? ;-)
Ist doch so :-)
Mahlzeit droom,
Korrekt ist also:
SELECT B.uid FROM B,A LEFT JOIN C ON ( A.pid = C.pid AND C.user =1 ) WHERE A.pid = B.uid
IMHO besser wäre aber
SELECT B.uid
FROM B
JOIN A ON B.uid = A.pid
LEFT JOIN C ON (A.pid = C.pid AND C.user = 1)
So wird viel deutlicher, dass A auch an B drangejoint wird und über welche Felder das geschieht.
MfG,
EKKi
okay vielen Dank ^^
Hallo,
SELECT B.uid FROM A,B LEFT JOIN C ON ( A.pid = C.pid AND C.user =1 ) WHERE A.pid = B.uid
aber ich bekomme die Meldung:
#1054 - Unknown column 'A.pid' in 'on clause'
ich benutze Mysql 5.0.18. Der Ausdruck sollte funktionieren.
Nein, dieses kaputte Verhalten gibt es seit MySQL 5.0.12 nicht mehr.
Das steht auch genauso im Handbuch, Abschnitt "Join Processing Changes in MySQL 5.0.12".
Verwunderte Grüße
Vinzenz