Rolf B: Query mysql

Beitrag lesen

Hallo Jörg,

Na aber wenn Du gefragt hättest, welches meiner Kinder Fußball spielt und ich Dir gesagt hätte, das Jüngste, bräuchtest Du dann noch den Namen des Kindes, wenn Du mir 3 hypothetische vorgegeben hättest?

Wenn ich 2 deiner Kinder sehe und dich frage, welches deiner Kinder Fußball spielt, und du antwortest: "das jüngste", dann weiß ich immer noch nicht, ob das jüngste bei den beiden dabei ist. Sprich: Ob ich den Fußballer sehe.

Der Knackpunkt ist: geht es um "deine Kinder" - also alle 3 - oder "diese Kinder" - also nur die beiden, die ich sehe.

Aber ok

Jedwede Selektion endet mit der Bedingung, die zeitlicher Natur ist und mit dem jeweiligen Tag der Anwendung der Query endet.

D.h. am heutigen Tag ist eine Selektion von Aufträgen aus 2021, ohne die 2022er, nicht möglich.

Dann würde ich Dir vorschlagen:

SELECT a.KundenID,
       p.Name, p.Tel, p.Email,
       st.Firmenname, st.Strasse1, st.PLZ, st.Ort,
       a.letzter_auftrag
FROM
     (SELECT a1.kundenid, max(a1.auftragdatum) as letzter_auftrag
      FROM auftraege a1
      WHERE /* bedingung für Aufträge */
      GROUP BY a1.kundenid) a
JOIN
     kunden     k  ON k.kundenid=a.kundenid
JOIN
     stammdaten st ON st.kundenid=a.kundenid

Der innere SELECT liefert die nötigen Kunden-IDs sowie die zugehörige jüngste Auftragsnummer im selektierten Zeitraum. Der GROUP BY sorgt dafür, dass an dieser Stelle eine KundenID nur einmal entsteht.

Kunden- und Stammdaten werden danach erst dazugeJOINt.

WÄREN Abfragen "2020-2021" möglich gewesen und du hättest als jüngsten Auftrag den aus 2022 sehen wollen, hätte man den separat in einem Subselect ermitteln müssen.

Rolf

--
sumpsi - posui - obstruxi