Mailinglisten-Archive |
Hallo Liste, ich habe hier eine datenbankbasierte PHP-Anwendung, bei der unter anderem eine Liste von Dokumenten angezeigt wird. Diese Dokumente haben ID und Version als kombinierten primary key (d.h. es können also mehrere Versionen ein und desselben Doks vorhanden sein). Nun will ich aber, daß per Default nur die jeweils neueste Version jedes Doks angezeigt wird. Bisher habe ich das so gemacht: - Zuerst ein SELECT ... ORDER BY id asc, version desc - dann alles in ein zweidimensionales PHP-Array eingelesen ($docdata[zeile][spaltenname]) - dann ein neues, temporäres Array erzeugt welches in einer Schleife bei hintereinander folgenden "doppelten" IDs immer nur die jeweils erste nimmt (daher das ORDER by version desc) - zum Schluss das temporäre Array dem "richtigen" wieder zugewiesen und gelöscht. Das scheint zwar soweit zu funktionieren - allerdings frage ich mich, ob es dafür nicht eine einfachere Lösung gibt. Das ganze "Array-hin-und-her-schaufeln" ist sicher bei größeren Datenmengen nicht sonderlich schnell und speichersparend. Frage daher: Geht das auch schon direkt in SQL? Also so daß mir die Datenbank bereits nur die Sätze mit der jeweils neuesten Version eines Dokuments liefert, und eben nur der. Zu allem Überfluss hätte ich das ganze auch noch am liebsten in möglichst DB-unabhängigem SQL, d.h. irgendwelche "proprietären" Erweiterungen kommen nicht in Betracht, da das Skript unverändert (dank PHPLIB) gegen MySQL und ODBC läuft. CU, Manuel -- Quote of the month: "The parade that´s electrical, it serves no real purpose Takes up a lot of juice, just to impress us." (No Doubt, "Tragic Kingdom")
php::bar PHP Wiki - Listenarchive