Vinzenz Mai: join - mehrere zeilen einer zeile zuordnen

Beitrag lesen

Hallo Kim,

nun hat sich mir eine andere Wissenslücke eröffnet:
Thema joins:

dazu empfehle ich Dir die geplanten Feature-Artikel von Rouven und mir (ja, etwas Eigenwerbung muss auch sein). Links zu den Reviewversionen gibt es in diesem Archivposting von Tim.

wie bringe ich es jetzt fertig, dass mir _alle_ termine _einer_ veranstaltung angezeigt werden (die Suchfunktion soll zunächst nicht berücksichtigt werden)
so sieht es zur zeit aus:

  

> SELECT a.ueberschrift, b.beginn, b.ende FROM veranstaltungen a, termine b WHERE a.id = b.vid";  

schreibst Du schöner (und gleich funktional):

  
SELECT  
  ueberschrift,  
  beginn  
  ende  
FROM veranstaltungen v     -- v wie _v_eranstaltungen  
INNER JOIN termine t       -- t wie _t_ermine  
ON v.id = t.vid  

PROBLEM:  wie werden anschließend alle Zeilen aus Tabelle 2 (Termine) gelesen, wo a.id = b.vid?

Das verstehe ich nicht ganz. Diese Anweisung liefert Dir bereits alle Termine aller Veranstaltungen. Möchtest Du nur eine bestimmte Veranstaltung haben, so filterst Du diese mit Hilfe der WHERE-Klausel aus:

  
SELECT  
  ueberschrift,  
  beginn  
  ende  
FROM veranstaltungen v  
INNER JOIN termine t  
ON v.id = t.vid  
WHERE v.id = <die id der speziellen Veranstaltung>  

Nun erhältst Du alle Termine dieser speziellen Veranstaltung.

Freundliche Grüße

Vinzenz