phpbar.de logo

Mailinglisten-Archive

[dbs] Nachbarelemente ueber 2 Tabellen

[dbs] Nachbarelemente ueber 2 Tabellen

Susanne Jäger susjaeger at sujag.de
Don Jul 14 16:03:49 CEST 2005


Hallo,

Hier versagen meine SQL-Kenntnisse (oder die Phantasie).

Ich versuche für eine Navigation jeweils den nächsten bzw.
vorhergehenden Eintrag zu identifizieren. Schwierig wird das Ganze, weil
Informationen aus 2 Tabellen mit einer 1:n Beziehung ausgewertet werden
sollen.
Ich erkläre es mal mit Beispieldaten, da ich nicht weiß, wie ich das
noch abstrahieren soll; sonst hätte ich die Lösung vermutlich schon :-(

<----------- snip ---------------->
Datenbank-Struktur mit den relevanten Feldern und Beispieleinträgen:

table feste
festID	festName	ortsID	dateiname
9	Caputher Musiken	22	caputh
10	Choriner Musiksommer	14	chorinmusik
11	Kapellenkonzerte im Kloster Chorin	14	chorka
12	FilmFestival Cottbus	43 	cottbusfilm
13	Lausitzer Opernsommer im Pückler Park Branitz	43	lausitz

table orte
ortsID	ortsname
14	Chorin
22	Caputh
43	Cottbus

<---------- /snip -------------->

Gesucht werden soll jetzt jeweils das vorhergehende/nächste Fest, wenn
nach Ort und Festname sortiert wird. Mein Problem liegt da, wo an einem
Ort mehrere Feste existieren. So weit bin ich gekommen für das nächste
Fest (vorhergehend entsprechend).

SELECT f.festID, festname, ortsname
FROM veranstaltung
LEFT JOIN feste f USING (festID)
LEFT JOIN orte o USING (ortsID)
WHERE ortsname >= '$ortsName' AND festname > '$festName'
ORDER BY ortsname ASC, festname ASC LIMIT 1

'veranstaltung' sorgt zusätzlich dafür, dass nur aktuelle Feste gefunden
werden, der Teil funktioniert,
aber WHERE stimmt natürlich nicht, wie lässt sich die Doppelsortierung
in einer größer/kleiner Bedingung abbilden? Oder geht das gar nicht mit
einer einzigen Abfrage?

Wenn das wichtig ist: zur Verfügung steht MySQL 4.0.15

Gruß
Susanne

-- 
http://sujag.de - Webentwicklung und -beratung
susjaeger at sujag.de
Lottumstr. 22, 10119 Berlin, Tel: 030 - 440 483 47

php::bar PHP Wiki   -   Listenarchive