Moin!
Auch der Versuch "SELECT termine.nr as termine_nr, * FROM ..." schlug fehl. Wie zum Teufel komme ich an "termine.nr" ?
SELECT * FROM termine INNER JOIN akt_orte ON ( akt_orte.breitengrad <= '49.7200401' AND akt_orte.breitengrad >= '49.5400601' AND akt_orte.laengengrad <= '8.45234' AND akt_orte.laengengrad >= '8.27236' AND termine.ort_nr = akt_orte.nr AND termine.loe_kz = 0 AND termine.intern_kz = 0 AND termine.tag >= '2003-01-10' AND termine.tag <= '2003-02-09' ) ORDER BY termine.tag, termine.uhr, termine.nr
SELECT * ist schon mal ganz schlecht. Benenne eindeutig die von dir gewünschten Spalten in den beiden Tabellen, und alles wird besser. Dann kannst du obendrein auch (was jetzt noch nicht funktionierte) Alias-Namen zuordnen und so die Spalten eindeutig abfragen.
Was sonst noch zu sagen wäre:
1. Die JOIN-Bedingung im "ON ..." zu bringen ist vollkommen in Ordnung. MySQL optimiert das zwar ins "WHERE" hinein, weil es für MySQL so offenbar schneller geht, aber andere RDBMS können unter Umständen durchaus davon profitieren, dass die Verknüpfungsbedingung im "ON" genannt wird.
2. Ein Subselect, wie du ihn bei Oracle kennst, ist nicht 100% vergleichbar mit einem JOIN. Sonst würde ja niemand jammern, dass MySQL Subselects (jedenfalls in Version 3) nicht kann. Subselects sind offenbar für was anderes da, als JOINs. Also bitte nicht verwechseln. Und außerdem bin ich mir 100% sicher, dass auch Oracle JOINs kann - nur vermutlich mit einer anderen Syntax.
3. Zum Testen deiner SQL-Kommandos ist es sehr empfehlenswert, wenn du irgendeine SQL-Administrationsoberfläche zur Verfügung hättest. Idealerweise installierst du PhpMyAdmin, damit hast du eine wirklich gute Umgebung, um Datenbankprobleme und Datenbankabfragen in den Griff zu kriegen. Für dein Problem sicherlich sehr hilfreich ist, dass PhpMyAdmin (aber wohl auch jede andere Admin-Oberfläche) dir direkt anzeigt, welche _Spalten_ du als Ergebnis kriegst. Das Rumraten, wie die Spalten denn nun wohl heissen mögen, entfällt. Außerdem meine ich mich in diesem Zusammenhang daran zu erinnern, dass gleichlautende Spalten zweier Tabellen dann nicht als zwei Spalten zurückgegeben werden, wenn du ihnen _keinen_ Aliasnamen gibst. Schon allein deswegen ist SELECT * schlecht.
- Sven Rautenberg
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)