Abfrage über 2 Tabellen klappt nicht
Kalle
- datenbank
0 Kalle
Guten Tag,
meine Aufgabe ist es, in einer abgegrenzten geografischen Region Veranstaltungen zu finden. Ich probiere seit gestern nachmittag, zwei Tabellen gemeinsam abzufragen und kriegs nicht hin.
In der "akt_orte" sind Orte mit geografischer Länge und Breite. Der Unique Key ist "akt_orte.nr". Ich will nun Orte finden, deren Länge von ... bis ... und deren Breite von ... bis ... geht, also auf der Landkarte ein Rechteck:
SELECT nr from akt_orte WHERE
( akt_orte.breitengrad <= '".$nord."'
AND akt_orte.breitengrad >= '".$sued."'
AND akt_orte.laengengrad <= '".$ost."'
AND akt_orte.laengengrad >= '".$west."' )
In der Tabelle "termine" sind Veranstaltungstermine mit Datum, Veranstaltungstyp usw. Unique Key ist "termine.nr". Ich suche einen bestimmten Zeitraum:
SELECT * from termine WHERE
( termine.tag >= '".$tag_von."'
AND termine.tag <= '".$tag_bis."' )
Nun habe ich von der einen Abfrage die Orte der Region, von der anderen Abfrage bundesweit die Veranstaltungen des Zeitraums.
Wie komme ich zu der Schnittmenge ?
Unter ORACLE würde es so gehen, aber das funzt bei MySQL nicht:
SELECT * from termine WHERE
( termine.tag >= '".$tag_von."'
AND termine.tag <= '".$tag_bis."'
AND ort_nr IN (
SELECT nr from akt_orte WHERE
( akt_orte.breitengrad <= '".$nord."'
AND akt_orte.breitengrad >= '".$sued."'
AND akt_orte.laengengrad <= '".$ost."'
AND akt_orte.laengengrad >= '".$west."' )
)
Habe schon den Hinweis auf JOIN bekommen, aber es will nicht.
Bin für jede Hilfe seehr dankbar.
Gruß aus Worms, Kalle
Nachtrag:
Die Auswahl der Datensätze klappt mit
SELECT * FROM termine, akt_orte
WHERE
( akt_orte.breitengrad <= '".$nord."'
AND akt_orte.breitengrad >= '".$sued."'
AND akt_orte.laengengrad <= '".$ost."'
AND akt_orte.laengengrad >= '".$west."'
AND akt_orte.nr = termine.ort_nr
AND termine.loe_kz = 0
AND termine.intern_kz = 0
AND termine.tag >= '".$tag_von."'
AND termine.tag <= '".$tag_bis."'
)
ORDER BY termine.tag, termine.uhr, termine.nr
... ABER ...
echo "Termin-Nr=[".$row['termine.nr']."] Ort-Nr=[".$row['ort_nr']."]<br>";
gibt für BEIDE Werte die ort_nr aus, ich komme an "termine.nr" nicht dran:
Termin-Nr=[722] Ort-Nr=[722]
termine.nr brauche ich aber, um einen Link zum Ändern des Termins bilden zu können.
Kalle