Hallo Axel!
^ Hier bekommst Du aber den kleinsten (ältesten) Wert für PUBLTIME. Ist das so gewollt?
Hab grad keinen Zugriff, aber ich dachte schon, dass da noch ein ASC drinnen war.
Bitte ersetze den * durch die Spaltenbezeichner, die Du _wirklich_ benötigst.
War nur um Tipparbeit zu sparen ;) Hätte ich erwähnen sollen.
SELECT mt_seiten.ID, mt_seiten.NAME, tr_versionen.INHALT, rt_versionen.PUBLTIME
FROM rt_versionen LEFT JOIN mt_seiten ON mt_seiten.ID = rt_versionen.SEITEN_ID
WHERE mt_seiten.ID IN (4,19,18,24) AND rt_versionen.PUBLTIME < NOW() ORDER BY mt_seiten.ID, rt_versionen.PUBLTIME;
Super, immer noch besser als x Abfragen zu machen.
Mit Hilfe einer Programmiersprache kannst Du nun dieses Resultset entsprechend auswerten.
Ich war nur so verbohrt in eine reine SQL-Lösung und hab als Alternative nur noch x Queries gesehen.
Das ist von der Performance her sicher harmlos gegen die andere Vorgangsweise.
Reine SQL-Lösung gibts dafür aber nicht, oder?
Ich stell mir eine virtuelle Spalte EXPTIME vor, die durch ein SELECT definiert ist:
SELECT MAX(PUBLTIME) from this.table WHERE SEITEN_ID = this.SEITEN_ID & PUBLTIME < NOW();
und dann mach ich nur noch:
SELECT ... FROM rt_versionen LEFT JOIN mt_seiten ON mt_seiten.ID = rt_versionen.SEITEN_ID WHERE PUBLTIME < NOW() && EXPTIME > NOW();
Das Feature gibt es natürlich nicht ;) aber vielleicht fällt jemand anders etwas dazu ein.
danke für die Lösung, die ich heut abend gleich mal umsetze
Sven