max: MYSQL Query: NOT IN? "JOIN"+"WHERE"-clause?

Beitrag lesen

wenn ich dein problem richtig verstanden habe, dann bekommst du mit deiner abfrage keine datensätze zurück. dann gibt es zwei möglichkeiten, die abfrage ist falsch oder sie ist richtig und die daten führen einfach zu keinen ergebnis.

genau, ich bekomme keine Daten zurück. Sollte ich aber. Deshalb versuche ich rauszufinden was an der Abfrage falsch ist.

da die abfrage so trivial ist, hast du dich entweder mit den zeiträumen geirrt, die du in den bedinungen haben willst oder aber die daten geben einfach keinen treffer her.

  
SELECT objnr  
FROM bookings  
WHERE date1 < '20081212' AND date2 >= '20081212'  
OR date1 <= '20081210' AND date2 > '20081210'  
OR date1 >= '20081210' AND date2 <= '20081212'  

gibt mir alle bereits vorhandenen Buchungen für den angefragten Zeitraum zurück, die Anfrage funktioniert also. Ich möchte sie aber umkehren, also die NICHT gebuchten Objekte haben. Bisher habe ich das außerhalb des Querys über ein Array gelöst. Hat funktioniert, ist aber unnötig kompliziert.

mit deinem beispiel jedenfalls können wir nichts anfangen, da dieser datensatz in der unterabfrage erfasst werden würde, also nicht angezeigt wird. was wir bräuchten wäre ein beispiel, das angezeigt werden sollte, wobei ich davon ausgehe, dass:

date1 = Anfangsdatum
date2 = Enddatum

Verstehe jetzt nicht ganz was du meinst. Die Unterabfrage ist ja genau mein Problem?! Vllt. hilft ein vollständiges Beispiel:

objects:

nr   |  name  |   beschreibung

1      Audi         toll
   2      BMW        ganz toll

bookings:

date1     |     date2     |      name       |  objnr

2008-12-08      2008-12-10     Horst Schlaemmer    1
 2008-12-10      2008-12-12      Max Mustermann     2

Anfrage: A.Merkel will ein Auto im Zeitraum 20081210 bis 20081212. Es soll also angezeigt werden: "Verfügbare Autos: Nr1: Audi"

Jetzt klar? ;)

Grüße,
Max