phpbar.de logo

Mailinglisten-Archive

[php] [etwas OT] DB-Zeilen "filtern"

[php] [etwas OT] DB-Zeilen "filtern"

Manuel Hossfeld manuel_(at)_hossfeld.de
Thu, 1 Jul 1999 01:29:15 +0200


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