Micha89: 2x Join

Guten morgen,

warum kann ich keine zeiw mal Join in eine Abfrage rein zu setzten:

  
$sql = "  
SELECT  *  
FROM    `artikel`  
  
LEFT JOIN `user`  
ON artikel.user = user.id  
  
LEFT JOIN `user`  
ON artikel.bieter = user.name  
  
  
WHERE date_format(now(),'%Y-%m-%d %H:%i') >= date_add(start, interval aktionsdauer day)  
AND sem = '0'  
";  
$res = mysql_query($sql);  
  
while ($row = mysql_fetch_object($res))  
{  
  array_push($records, $row);  
}  

ich möchte später hier: [code lang=php'hochstbieter' => nl2br($record->bieter),code] später den Namen von dem Bieter haben und nicht nur die ID!

Gruß,
Micha

  1. warum kann ich keine zeiw mal Join in eine Abfrage rein zu setzten:

    LEFT JOIN user
    ON artikel.user = user.id

    LEFT JOIN user
    ON artikel.bieter = user.name

    Warum willst du 2x auf dieselbe Tabelle joinen?

    Ist Username und ID nicht im selben Datensatz?

    1. Hallo,

      Ist Username und ID nicht im selben Datensatz?

      hmm das kommt jetzt drauf an, wie man das sieht. In der Tabelle "artikel" ist nur die ID von dem User die ist unter der Spalte Bieter zu finden. Dort steht z.B. eine 8 dirn.

      In der Tabelle "user" gibts dann ein Feld ID dort ist z.B. wieder die 8 zu finden und eben das Feld Name da steht z.B. Micha drin. Und ich brauch eben den Namen von dem User.

      Gruß,
      Micha

      1. In der Tabelle "user" gibts dann ein Feld ID dort ist z.B. wieder die 8 zu finden und eben das Feld Name da steht z.B. Micha drin. Und ich brauch eben den Namen von dem User.

        dann brauchst du aber keine 2 JOINs  wenn du lediglich je einen Datensatz aus 2 Tabellen verknüpfen möchtest.

        Ggf. solltest du diesen Artikel zum Thema JOINs kurz überfliegen (oder genau lesen).

        1. Hallo,

          dann brauchst du aber keine 2 JOINs  wenn du lediglich je einen Datensatz aus 2 Tabellen verknüpfen möchtest.

          hmm wie komme ich das dann hin, dass ich von dem bieter, wo JETZT aktuelle z.B: noch eine 8 drin steht, den Namen bekomme? Denn oben

            
          LEFT JOIN `user`  
          ON artikel.user = user.id  
          
          

          sage ich ja nur dass artikel.user = user.id ist, aber da muss ich dann doch noch sagen, dass artikel.bieter = user.name ist oder? Und genau da hänge ich, das verstehe ich einfach nicht.

          Ggf. solltest du diesen Artikel zum Thema JOINs kurz überfliegen (oder genau lesen).

          danke dir, das werde ich mir auch gleich mal ansehen.

          Gruß,
          Micha

  2. Hallo,

    warum kann ich keine zeiw mal Join in eine Abfrage rein zu setzten:

    selbstverständlich geht dies. Und da dies mit PHP nichts zu tun hat, entferne ich mal alles, was nach PHP aussieht.

    Möchtest Du zweimal aus unterschiedlicher Sicht auf eine Tabelle zugreifen, was durchaus häufig vorkommen kann, so musst Du dem DBMS klar machen, welche Daten Du gerade haben willst, Du benötigst zwingend Aliasnamen.

    » SELECT  *  
    
    > FROM artikel  
    > LEFT JOIN user  
    > ON artikel.user = user.id  
    > LEFT JOIN user  
    > ON artikel.bieter = user.name   -- der Bieter ist eine andere Person  
    
                                      -- unterscheide die beiden.  
    
    > WHERE date_format(now(),'%Y-%m-%d %H:%i') >= date_add(start, interval aktionsdauer day)  
    > AND sem = '0'  
    
    

    Wie es geht, kannst Du dem Abschnitt Selfjoin meines Join-Artikels, Absatz Erläuterung, entnehmen.

    Freundliche Grüße

    Vinzenz