Danke erstmal für eure rege Beteiligung.
Und was ist das für eine Software?
In ein paar Worten ist das schwer zu erklären, aber ich versuche es dennoch: Es gibt Produktionsartikel, welche umfangreichen Tests (für Qualitätszwecke) ausgesetzt werden. Diese bekommen eine Nummer (die los_id) und werden in einer Tabelle gespeichert. In einem bestimmten Zyklus werden die Tests durchgeführt. Die Testergebnisse (u.a. eine allgemeine Beurteilung) werden dann unter einer laufenden Nummer (data_id) und dem aktuellen Datum in der Tabelle berichte gespeichert. Anfangs haben die Tests meist noch das Prädikat "i.O.". Nach einigen Tests (bspw. beim fünften Mal) ist das Ergebnis nicht mehr zufriedenstellend und bekommt das Prädikat "NIO".
Die Abfrage, um die es hier geht, dient zu Auswertungszwecken. Dazu soll von jedem Artikel nur das Testergebnis ausgegeben werden, welches als letztes noch das Prädikat "i.O." bekommen hat (dass in der Spalte urteil steht).
Ich habe dafür auch schon eine Lösung programmiert, indem ich die Abfrage ohne GROUP BY vornehme und ohne die Anzahl der Datensätze zu limitieren. Diese Datensätze werden dann in ein Array übertragen, welches ich dann mittels PHP abarbeite. Hier ist es kein Problem das aktuellste Datum eines Artikels mit dem Prädikat "i.O." herauszufiltern.
Jetzt habe ich aber die Befürchtung, dass bei einigen Tausend Einträgen die Software sehr langsam werden könnte. Mir fehlt da eben ein wenig die Erfahrung. Deswegen wollte ich es über MySQL probieren. Die Software läuft ausschließlich in einem Firmennetzwerk und wird von höchstens 1-3 Mitarbeitern (im schlimmsten Fall vielleicht 5) benutzt. Der Rechner, auf dem der Webserver läuft ist aktuell und sehr gut gerüstet.
Ich habe also auf GROUP BY gesetzt in der Hoffnung, MySQL mitteilen zu können, unter welchen Bedingungen zu gruppieren ist. MySQL nimmt bei GROUP BY einen willkürlichen der betreffenden Datensätze. Ich war guter Dinge, dass ich MySQL eben noch irgendwie sagen kann, nimm nicht irgendeinen, sondern den mit dem höchsten Datum. Aber so einfach ist es dann wohl doch nicht
So, jetzt kennt ihr die Hintergründe und meine Gedanken dazu. Vielleicht lohnt es sich gar nicht, die SQL-Abfrage zu optimieren und weiterhin lieber auf die Filterung durch PHP zu setzen?
Gruß, startist