verona: MySQL SELECT LEFT JOIN oder WHERE

Beitrag lesen

Hallo liebe Forumteilnehmer,

ich bin's mal wieder mit 'nem Problem.

Wie man den Tabellen entnehmen kann, nimmt Kunde (1) Hans an zwei Seminaren teil. Ich möchte aber nur jeweils die ersten Seminare angezeigt bekommen. In diesem Fall das Seminar 2003-01-20.

seminartermin
+-----------+------------+------------+
| termin_id |   beginn   | teilnehmer |
+-----------+------------+------------+
|         1 | 2003-01-20 |          15|
|         2 | 2003-01-27 |          15|
+-----------+------------+------------+

kunde
+-----------+---------+------------+
|  kunde_id | vorname |  nachname  |
+-----------+---------+------------+
|         1 |    hans | mustermann |
|         2 |  dieter |   beispiel |
+-----------+---------+------------+

seminarbelegung
+-------------+-----------+-----------+
| belegung_id |  kunde_id | termin_id |
+-------------+-----------+-----------+
|           1 |         1 |         1 |
|           2 |         1 |         2 |
|           3 |         2 |         2 |
+-------------+-----------+-----------+

Ich habe folgende Abfrage benutzt und bekomme natürlich doppelte Kundenanzeigen.

SELECT *
FROM kunde AS k
LEFT JOIN seminarbelegung AS sb ON sb.kunden_id = k.kunde_id
LEFT JOIN seminartermin AS st ON sb.termin_id = st.termin_id

+-----------+---------+------------+-------------+-----------+-----------+-----------+------------+------------+
|  kunde_id | vorname |  nachname  | belegung_id |  kunde_id | termin_id | termin_id |   beginn   | teilnehmer |
+-----------+---------+------------+-------------+-----------+-----------+-----------+------------+------------+
|         1 |    hans | mustermann |           1 |         1 |         1 |         1 | 2003-01-20 |          15|
|         1 |    hans | mustermann |           2 |         1 |         2 |         2 | 2003-01-27 |          15|
|         2 |  dieter |   beispiel |           3 |         2 |         2 |         2 | 2003-01-27 |          15|
+-----------+---------+------------+-------------+-----------+-----------+-----------+------------+------------+

Das unten hätte ich aber gebraucht:

Ich weiß nicht, wie ich eine Bedingung basteln soll, oder ob ich besser mit MIN() bzw. MAX() arbeiten soll.

+-----------+---------+------------+-------------+-----------+-----------+-----------+------------+------------+
|  kunde_id | vorname |  nachname  | belegung_id |  kunde_id | termin_id | termin_id |   beginn   | teilnehmer |
+-----------+---------+------------+-------------+-----------+-----------+-----------+------------+------------+
|         1 |    hans | mustermann |           1 |         1 |         1 |         1 | 2003-01-20 |          15|
|         2 |  dieter |   beispiel |           3 |         2 |         2 |         2 | 2003-01-27 |          15|
+-----------+---------+------------+-------------+-----------+-----------+-----------+------------+------------+

Auch wären die ganzen ..._id Felder eigentlich nicht nötig. Gibt es eine Möglichkeit beim LEFT JOIN nur ausgewählte Spalten zu übernehmen? Oder könnte ich das Ganze mit WHERE-Bedingungen auch machen? Wichtig ist mir nur, dass ich auch andere Tabellen, z.B. Adresse, auch anbinden kann.

Gruß V.