Jörg: mysql, Query, Immer nur der letzte Eintrag

Beitrag lesen

Hallo Rolf,

erstmal danke für die Hilfe und dann noch eine Korrektur, MAX() war schon korrekt, ich hatte vorhin fälschlich "älteste" geschrieben, gesucht wird aber nach wie vor der letzte, also jüngste Eintrag.

ON (ids stimmen überein) AND ((Datum Stimmt) OR (xyz=0))

Auf der linken Seite vom OR brauchst Du xyz=1 nicht abzufragen, das ist boolesche Optimierung. (A AND B) OR (NOT A) ist identisch zu B OR (NOT A). Mach Dir eine Wahrheitstabelle wenn Du es nicht glaubst 😀

Da ich reiner Autodidakt bin und somit nicht per Studium verpflichtet war, habe ich noch nie eine Wahrheitstabelle angefertigt. Wenn ich nicht zufällig ein paar Informatikstudenten kennen würde, würde ich den Begriff gar nicht kennen. 😉

Ich kann mir aber vorstellen, was Du meinst und glaube es Dir, trotzdem habe ich es jetzt mal zum besseren verständnis (für mich) ohne bolsche Optimierung in die Query aufgenommen, nur kommt als Ergebnis imm,er noch nicht genau das heraus, was ich suche.

Bei folgenden Daten der table2 z.b.

ID	XYZ	Date
51	0   2021-04-01
60	0	2021-04-01	
62	1	2021-04-01
63	1	2021-04-01
63	0	2021-04-02

verliere ich mit folgender Query

...
AND (((t2.Datum = (SELECT MAX(Datum)
                                  FROM table2 t2
                                  WHERE t2.ID = t1.ID) AND XYZ = 1) OR (XYZ = 0)) AND t2.del = 0)

den an 4.Stelle liegenden Datensatz aus der Ergebnismenge.

Der soll zwar auch herausfallen, aber erst dann, wenn der an 5.Stelle liegende Datensatz mit derselben ID den XYZ-Flag 1 erhält.

Vorher würde ich gerne beide in der Ergebnismenge haben.

Danke für Deine Mühe + Hilfe und einen vorosterlichen Gruß,

Jörg