Kai(n): Probleme bei LEFT JOIN - In WHERE Abfrage ok, in LEFT JOIN nicht ok

Ich verstehe die Welt nicht mehr und bin am verzweifeln

diese Abfrage funktioniert


SELECT a.id_an, a.count_a

FROM tab1 a, tab2 f


WHERE f.id_an = a.id_an AND f.pic=1

ORDER by a.id_an DESC 

diese Abfage nicht...



SELECT a.id_an, a.count_a

FROM tab1 a, tab2 f

LEFT JOIN tab3 b 		ON b.id_an=a.id_an 

WHERE f.id_an = a.id_an AND f.pic=1

ORDER by a.id_an DESC 

#1054 - Unbekanntes Tabellenfeld 'a.id_an' in on clause

aber in der normales SELECT Abfrage geht es, warum ist es dan nin der LEFT JOIN ein unbekanntes Feld?

Kai

  1. Hallo Kai(n),

    LEFT JOIN verknüpft die beiden Tables links und rechts von sich. Das sind tab2 und tab3. Du musst die Reihenfolge in der FROM Klausel ändern, so dass tab1 und tab3 gejoined werden.

    Rolf

    --
    sumpsi - posui - clusi
  2. Tach!

    SELECT a.id_an, a.count_a
    
    FROM tab1 a, tab2 f
    
    LEFT JOIN tab3 b 		ON b.id_an=a.id_an 
    
    WHERE f.id_an = a.id_an AND f.pic=1
    
    ORDER by a.id_an DESC 
    

    #1054 - Unbekanntes Tabellenfeld 'a.id_an' in on clause

    Du möchtest letztlich f mit a und b mit a joinen. Da must du zuerst zwei Tabellen joinen und an das Konglomerat die dritte joinen.

    FROM a JOIN f ON ... LEFT JOIN b ON ...

    Beachte: kein Komma, und dass die Bedingung zwischen f und a nun ins ON kann und nicht im WHERE stehen muss.

    dedlfix.