Vinzenz Mai: mysql: Abfrage zusammenfassen / Ich habs

Beitrag lesen

Hallo,

ich hatte nur einen kleinen Denkfehler drin. Jatzt hab ichs begriffen. Gar nicht mal so schwer!

schön.

select
b.xxx,
b.yyy,
t.ddd,
t.rrr,
t.uuu
FROM tab1 b, tab2 t
WHERE b.bestellID = t.bestellID AND b.SpielID=$SpielID

Richtig so? Oder gehts noch leichter?

Schöner. Mit der expliziten JOIN-Syntax, siehe gern auch die Titel unser beiden Artikel :-)

  
SELECT                         -- Gib mir  
    b.xxx,                     -- die gewünschten  
    b.yyy,                     -- Spalten  
    t.ddd,  
    t.rrr,  
    t.uuu,  
FROM                           -- aus Tabelle  
    tab1 b                     -- tab1, die mit b angesprochen wird und  
INNER JOIN                     -- mit der Tabelle  
    tab2 t                     -- tab2, die hier mit t angesprochen wird  
ON                             -- über die Bedingung  
    b.bestellID = t.bestellID  -- gleicher Werte in den Spalten bestellID  
                               -- verknüpft ist,  
WHERE                          -- wobei nur die Datensätze berücksichtigt  
    b.SpielID = <Vorgabe>      -- werden, die in der Spalte SpielID den  
                               -- Vorgabewert enthalten  

Ich bevorzuge diese Schreibweise, weil sie klar macht, über welche Bedingung die Tabellen miteinander verknüpft sind (JOIN-Bedingung) und welche Einschränkungen für die Ergebnismenge gelten (WHERE-Klausel).

Spätestens bei der Verknüpfung dreier Tabellen kannst Du mit dem Komma-Operator bei der Aufzählung der Tabellen mit impliziten Joins (Deine Version) Schiffbruch erleiden, weil die Reihenfolge der Aufzählung seit MySQL 5.0.12 eine wichtige Rolle spielt - und nicht beliebig ist.

Beim OUTER JOIN gibt es meiner Meinung nach heutzutage sowieso keine Alternative zur expliziten JOIN-Syntax, so dass es kein erhöhter Lernaufwand ist, sich gleich mit dieser vertraut zu machen.

Freundliche Grüße

Vinzenz