droom: LEFT JOIN

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.

  1. 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

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. 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 :-)

      1. 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

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. okay vielen Dank ^^

  2. 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