Ich versuche eine Auswahl zu treffen, die die Gesamtanzahl der verfügbaren Autos für ein bestimmtes Zeitfenster (2016-04-22 bis 2016-04-23) für ein bestimmtes Ziel anzeigt.MySQL - Verfügbare Daten suchen
In diesem Fall möchte ich sehen, wie viele Autos in Mandal zu vermieten sind. In meiner Anfrage wurde mir aber auch die Gesamtanzahl der verfügbaren Autos angezeigt, obwohl ich das Ziel angegeben habe.
SELECT destination, COUNT(destination) AS 'available cars'
FROM cars
LEFT JOIN orders
ON cars.id = orders.car_id
WHERE orders.car_id IS NULL
OR date_to NOT BETWEEN '2016-04-22' AND '2016-04-23'
AND date_from NOT BETWEEN '2016-04-22' AND '2016-04-23'
AND destination = 'Mandal'
GROUP BY destination
Ausführen der Abfrage oben gibt mir die folgende Tabelle: http://i.stack.imgur.com/Ck0s0.png
Zusammen mit den verfügbaren Autos in Mandal es, die noch ist es richtig angezeigt werden soll, nicht auch nur eine vorhandene Auto in Stavanger zurück . In Stavanger sollen zwei Autos verfügbar sein (eines, das zu einer anderen Zeit geleast wird, NOT BETWEEN '2016-04-22' AND '2016-04-23'
, und eines, das noch nicht geleast wurde, orders.car_id IS NULL
). Die Anzahl der verfügbaren Autos in Mandal ist jedoch korrekt.
Verwenden Sie Klammern. UND bindet stärker als OR –
Beispieldaten und gewünschte Ergebnisse würden helfen zu vermitteln, was Sie versuchen zu tun. –
Welches DBMS benutzen Sie? –