Mailinglisten-Archive |
Hi - Erlöst mich! Ich versuche aus einer Tabelle mit kleinen Artikeln mit EINER Query einen Artikel (mit seinen Bestandteilen, also '*' hearsuzuholen, und zugleich die Arikel_ID aid und Titel des vorherigen und des folgenden (nach Datum). Was ich bisher versuche sieht so aus, funktioniert aber nicht richtig: SELECT v.aid AS vorher, j.aid AS dieser, s.aid AS danach FROM analysen AS v LEFT JOIN analysen AS j ON v.datum < j.datum LEFT JOIN analysen AS s ON s.datum > j.datum WHERE j.aid=14 LIMIT 1; ... oder so ... SELECT prev.datum AS prev_datum, prev.aid AS prev_aid, this.datum AS this_datum, this.aid AS this_aid, next.datum AS next_datum, next.aid AS next_aid FROM analysen AS prev LEFT JOIN analysen AS this ON prev.datum < this.datum LEFT JOIN analysen AS next ON this.datum < next.datum WHERE this.aid = 14 ORDER BY prev_datum DESC, next_datum ASC LIMIT 1; Die Tabelle sieht so aus: +---------------------+-----+ | datum | aid | +---------------------+-----+ | 2000-08-09 16:42:17 | 8 | | 2000-08-11 00:00:00 | 2 | | 2000-08-11 00:23:19 | 14 | | 2000-08-15 16:35:40 | 3 | | 2000-08-16 16:37:26 | 4 | | 2000-08-16 16:39:15 | 5 | | 2000-08-16 16:40:31 | 6 | | 2000-08-25 03:29:47 | 15 | +---------------------+-----+ Beides funktioniert (ich gebe zu, dass ich nicht VÖLLIG verstehe warum) für Artikel, die wirklich noch einen Vorgänger und einen Nachfolger haben. Aber die beiden "äußeren" -- also 8 und 15 -- kann man damit nicht ziehen. Dann liefert er 0 Zeilen (mir ist auch klar warum, nebenbei) aber ich finde nicht die Query, die das tut was ich will. Vielleicht kann mir auch einer ein paar Worte dazu sagen, was LEFT JOIN genau soll, warum kann man nicht die WHERE-Klausel nehmen -- wo ist der Unterschied. Danke schon mal vorweg. -Florian -- Caspar Florian Ebeling <cfe_(at)_plannersdelight.net> / http://www.plannersdelight.net/ Boeblinger Str 63, 70199 Stuttgart, Tel +49 (0) 711 60 70 142 --- *** Weitere Infos zur Mailingliste und MySQL unter www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive