Andreas Korthaus: MySQL SELECT LEFT JOIN oder WHERE

Beitrag lesen

Hallo!

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

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

Genau, MIN() ist Dein Freund. Verwende ein GROUP BY über die Spalte k.kunden_id, und MIN(sb.termin_id), so gruppierst Du die Daten nach Kunden - hast also nur einen Datensatz pro Kunden, und mit der GROUP BY Funktion MIN() kannst Du dann bei "SELECT MIN(sb.termin_id) AS termin,..." die kleinste ID der der jeweiligen zugewiesenen Termine ermitteln.

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.

Wenn Du mehrere Tabellen hast brauchst Du den JOIN. WHERE bringt hier nicht sonderlich viel.

Wie Du bei SELECT an ausgwählte Spalten kommt solltest Du wissen!
http://de.mysql.com/documentation/mysql/bychapter/manual.de_Tutorial.html#Selecting_columns
http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#JOIN
http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#Group_by_functions

Viele Grüße
Andreas