Mailinglisten-Archive |
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