Join mit 2 Tabellen
Transmitter
- datenbank
0 Rouven
Hi
Ich versuche 2 Tabellen mit MySQL zu joinen:
Veranstaltung:
ID | Titel | ...
-------------------
1 | Titel1 | ...
2 |
3 |
und
Datum:
VeranstaltungsID | Datum
---------------------------
2 | 20.11.04
2 | 21.11.04
Was muss ich denn genau tun, um alle Veranstaltungen mit sämtlichen Vorführungen auszugeben?
Habe schon LEFT, LEFT OUTER, RIGHT usw. probiert, aber irgendwie bekomme ich immer 0 Rows returned :(
Kann mir da wer helfen?
Dankeschön schon mal
Bye, Transmitter
Hi,
ich darf dir erst kurz eine Erklärung geben und dann versuchen dein Problem zu lösen:
Ausgehen werde ich immer von veranstaltungstabelle join datumstabelle
1. LEFT JOIN:
Du kriegst alle Veranstaltungen, egal ob ihnen ein Datum zugeordnet ist oder nicht
2. RIGHT JOIN:
Du kriegst alle Daten, egal ob da eine Veranstaltung stattgefunden hat oder nicht
3. INNER JOIN:
Du kriegst nur die Datensätze, bei denen das JOIN-Kriterium (ON) stimmt, d.h. wo sowohl Veranstaltung als auch Datum da sind.
4. OUTER JOIN:
Du bekommst alle Datensätze (Kreuzprodukt)
Ich vermute du möchtest einen INNER JOIN. Wenn das bei dir nicht funktioniert liegt die Vermutung einer falschen Syntax nah.
Die sollte ungefähr so aussehen:
SELECT <spalten>
FROM tabelle1 INNER JOIN tabelle2
ON tabelle1.spalte = tabelle2.spalte
-> Bei dir sind das also die Veranstaltungs- und die Datentabelle mit der gemeinsamen Bedingung (Veranstaltungs-)ID:
SELECT titel, datum
FROM veranstaltung INNER JOIN datum
ON veranstaltung.id = datum.veranstaltungsid
Wenn das so keine Ergebnisse bringt, dann läuft was anderes schief.
MfG
Rouven
-> Bei dir sind das also die Veranstaltungs- und die Datentabelle mit der gemeinsamen Bedingung (Veranstaltungs-)ID:
SELECT titel, datum
FROM veranstaltung INNER JOIN datum
ON veranstaltung.id = datum.veranstaltungsidWenn das so keine Ergebnisse bringt, dann läuft was anderes schief.
Hi :)
Ja, dankeschön .. so klappt es .. werde mir deine kurze Übersicht auch gleich mal speichern, das ist nirgendwo so gut erklärt finde ich :(
Danke noch mal :)
Bye Transmitter