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

Beitrag lesen

yo,

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.

ich bleibe bei meiner aussage, wenn die unterabfrage funktioniert, dann ist die umkehrung richtig in der abfrage, die du gemacht hast. die abfrage/umkerung ist so trivial, da kann man fast nichts falsch machen.

ergo bleiben eigentlich nur zwei möglichkeiten, entweder die daten sind der knackpunkt oder aber die unterabfrage funktioniert nicht so, wie du glaubst. mehr möglichkeiten sehe ich im moment nicht.

aber mir ist klarer geworden, was du willst. und deine unterabfrage ist wirklich unvorteilhaft. ob zeiträume überschneidungen haben läßt sich eleganter prüfen, nämlich das startdatum mit dem jeweiligen enddatum vergleichen

  • date1 und date2 geben den zeitraum der buchungstabelle wieder
  • anfragestart und anfrageende ist der zeitraum der anfrage

dann liegt eine überschneidung der zeiträume vor wenn:

1. date2 >= anfragestart AND date1 <= anfrageende

sieht doch wesentlich leichter aus als deine drei OR bedingungen, zumal ich auch da einen fehler vermute, weil du nicht immer die gleichheit der datumswert mit rein nimmst.

Ilja