phpbar.de logo

Mailinglisten-Archive

Vorgängerartikel und Nachfolger mit einem SQL-Statement?
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Vorgängerartikel und Nachfolger mit einem SQL-Statement?



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 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive