be@sy: MYSQL Bedingungen verschachteln

Beitrag lesen

Hallo Zusammen,

ich versuche gerade verzweifelt ein Select über 4 Tabellen zu machen.
Diese werden über ihre FKS verbunden. Die Tabellen heißen:

fahrzeug, inventar, belegung und standort.

Dabei ist Fahrzeug ein Inventar. Dieses hat wiederum eine Belegung (d.h. hier sind Start- und Enddatum der Belegung angegeben).Jedes Inventar ist einem Standort zugeordnet.

Ich möchte mir nun anzeigen lassen, welches Fahrzeug vom Datum x bis y frei ist. Wenn ich dies nur über Belegung mache, sieht die Sache so aus:

SELECT *
FROM belegung
WHERE START < '2007-01-27'
AND ende < '2007-01-27'
OR START > '2007-02-28'
AND ende > '2007-02-28'

Ich bekomme auch tatsächlich nur die Zeilen angegeben, wo Start und Ende-Zeitpunkt nicht im gesuchten Zeitraum liegen.

Versuche ich das jetzt allerdings so aufzubauen, dass ich das Fahrzeug herausbekomme, das über Inventar an Belegung hängt, bekomme ich etwas, das aussieht wie ein Kreuzprodukt über alle 4 Tabellen. Mein SQL dazu sieht so aus:

SELECT * FROM fahrzeug, inventar , belegung, standort WHERE
inventar.id=belegung.inventar_id
AND START < '2007-01-27'AND ende < '2007-01-27'
OR START > '2007-02-28' AND ende > '2007-02-28'
AND inventar.id= fahrzeug.inventar_id
AND standort.id=inventar.standort_id

Ich würde gerne wissen, wie ich es schaffe der DB klar zu machen welche Bedingungen zusammengehören und wo diese durch OR getrennt werden. Was mache ich falsch?

Vielen Dank

Be@sy