baskat: LEFT JOIN richtige Methode?

Beitrag lesen

Hallo!

ich habe mir etliche Tutorials und Threads zum Thema LEFT JOIN durchgelesen, aber keiner der skizzierten Anwendungsfälle scheint so richtig zu meiner Problemstellung zu passen und ich bin mir mittlerweile nicht mehr sicher, ob es überhaupt der richtige Ansatz ist.

Es geht um eine Sportanlage mit mehreren Plätzen und die Möglichkeit einer Buchung mit wöchentlich wiederkehrenden Terminen - also z.B. jemand möchte Platz 2 für vier Wochen jeden Dienstag ab 16 Uhr für 2 Stunden nutzen.

Mein Ansatz war daher der, in einer Tabelle (booking_resource) die Plätze zu erfassen und in einer zweiten Tabelle (booking_schedule) die existierenden Buchungen abzuspeichern.

Um bei einer neuen Buchung Platzkonflikte zu vermeiden, wollte ich nur jene Plätze ausgeben, die für die gewählte Tag/Uhrzeit-Kombi noch frei sind.

Die Abfrage - so dachte ich anfangs zumindest - müsste mit einem LEFT JOIN leicht zu lösen sein:

SELECT res.id, res.title
FROM {booking_resource} res
LEFT JOIN {booking_schedule} sched
ON res.id = sched.rid
WHERE sched.timestamp != [unix-timestamp des gewünschten datums];

Im konkreten Script ist die WHERE-Bedingung komplexer, weil es ja immer um mehrere Termine geht, die der Besucher für die nächsten Wochen buchen will, aber vom Prinzip her dürfte das keinen Unterschied machen.

Mein Problem ist nun: Ich bin davon ausgegangen, dass der LEFT JOIN dafür sorgt, mir alle Resourcen (Plätze) zurückliefern würde, für die kein Eintrag in der schedule-Tabelle existiert. Dies geschieht jedoch nicht - ich bekomme gar kein Ergebnis zurück.

Was ist an meinem Ansatz falsch bzw. wie könnte man Eurer Ansicht nach den gewünschten Mechanismus besser in einem Query abbilden?

Vielen Dank im Voraus für Eure Anregungen!

Einen schönen Samstag wünscht
baskat