Hallo an alle da draußen ;-)
Ich hänge gerade bei einer kleinen Datenbank-Abfrage - folgende Struktur sei gegeben:
name | condition | inserted | value
--------+-----------+---------------------+--------
WertA | 10 | 2007-06-25 23:45:28 | 0.35
WertA | 12 | 2007-06-25 23:45:28 | 0.50
WertA | 10 | 2007-06-25 23:40:38 | 0.32
WertA | 12 | 2007-06-25 23:40:38 | 0.48
WertB | 4 | 2007-06-25 23:35:28 | 1.75
WertB | 7 | 2007-06-25 23:35:28 | 3.49
WertB | 4 | 2007-06-25 23:30:38 | 1.82
WertB | 7 | 2007-06-25 23:30:38 | 3.58
Der Zusamenhang ist folgender: name und condition sind theoretisch UNIQUE, praktisch ist allerdings eine History-Funktion gegeben, sodass name, condition und inserted UNIQUE sind. Sinn und Zweck: Zu einem bestimmten Zeitpunkt (inserted) hat eine bestimmte Einstellung (name) unter einer bestimmten Bedingung (condition) einen bestimmten Wert (value)
Obige Tabelle kann natürlich noch mehr Inhalt sein - es können noch mehr Optionen enthalten sein (z.B. "WertC") und es können noch mehr History-Stände der vorhandenen Optionen enthalten sein (z.B. "WertA" unter der Bedingung "10" von letztem Monat).
Nun gilt es daran ein paar Aufgaben umzusetzen. Als erstes wäre das das Auslesen des aktuellen Wertes einer Option X unter Bedingung Y - kein Problem:
~~~sql
SELECT name, condition, inserted, value
FROM config
WHERE name = X AND condition = Y
ORDER BY validation DESC
LIMIT 1
Auch das Auslesen aller vorhandenen Optionen und deren Bedingungen ist kein Problem:
~~~sql
SELECT name, condition
FROM config
GROUP BY name, condition
Doch wie kriege ich diese beiden Ergebnisse miteinander verbunden? Sprich: Wie kriege ich eine Ergebnisliste, mit allen enthaltenen Optionen und allen Bedingungen in der aktuellsten Version?
So muss das Ergebnis aussehen:
name | condition | inserted | value
--------+-----------+---------------------+--------
WertA | 10 | 2007-06-25 23:45:28 | 0.35
WertA | 12 | 2007-06-25 23:45:28 | 0.50
WertB | 4 | 2007-06-25 23:35:28 | 1.75
WertB | 7 | 2007-06-25 23:35:28 | 3.49
Natürlich könnte ich das ganze clientseitig lösen, indem ich zuerst den zweiten SQL-Query an den Server ja - mir damit alle vorhandenen Optionen besorge - und dann für jede Option einen Query absetze der mir den aktuellen Wert holt.
Aber das wäre ja langweilig - ich hätte das gerne in einem SQL-Query, jedoch ist es mir bis jetzt noch nicht gelungen das zu realisieren, sämtliche Versuche mit HAVING scheiterten (dann kam meist gar nichts mehr zurück *g*). Also, wie macht man so etwas?
Viele Grüße,
~ Dennis.
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Weblog: Comboboxen mit Javascript - [apr_dbd_mysql unter Debian - so geht es doch \Update]