Jörg: Query mysql

Beitrag lesen

Hallo Rolf,

vielen Dank für Deine Hilfe und die Denksanstöße.

Jetzt willst Du die Mitarbeiter beim Kunden 4711 ergänzen. Nehmen wir an, das sind 4 Stück - aber welcher Row willst Du die zuordnen? Ein DISTINCT über kundenid, info1, info2 liefert immer noch 3 Rows, und ein Join hätte damit 12 Zeilen. Ein DISTINCT nur über die Kundenid würde eine Row aus Tabelle 1 liefern und nach dem Join hätten wir dann 4 - aber Du verlierst info1 und info2.

Dazwischen gibt es nichts.

Hm, dann ist die Query aber jetzt ohnehin klar.
Denn die unterschiedlichen Informationen bringen mich eh nicht wirklich weiter.
Sollte sich die Adresse geändert haben, muss ich ohnehin die aktuelle nehmen, um den Kunden noch zu erreichen, also ein JOIN über die Stammdatentabelle ist nötig.

SELECT DISTINCT
a.KundenID,
p.Name, 
p.Tel, 
p.Email,
st.Firmenname, 
st.Strasse1, 
st.PLZ, 
st.Ort
FROM Auftraege a
LEFT JOIN Personen p ON a.KundenID = p.KundenID
LEFT JOIN Stammdaten k ON st.KundenID = a.KundenID

Hierzu aber noch 2 Fragen:

Der JOIN auf die Personentabelle muss ein LEFT JOIN sein, weil ich nicht zu jedem Kunden auch Mitarbeiter eingetragen habe.

Aber wie sieht es bei den Stammdaten aus? Hier hätte ich ja auch einen JOIN nehmen können, anstelle des LEFT JOIN. Macht eigentlich keinen Unterschied, oder?

Und die zweite Frage ist etwas komplizierter:

Wenn ich nun in meiner Ergenbnissmenge auch eine Spalte "letzter Auftrag" führen wollte, würde das gehen?
In der Tabelle a ist das Auftragsdatum vorhanden. Aber MAX(a.Auftragsdatum) stutzt mir die Ergebnismenge zusammen.

Welche DB und welche Version davon setzt Du ganz genau ein? Weiß ich nicht mehr.

Oh, müsst ich nachsehen. Irgendeine der aktuellen Maria-DBs ist es.

Jörg