Mein standardmäßig verfügbarer Raum (Avaroom) ist 0. Ich möchte es prüfen, ob es verfügbar ist oder nicht, wenn wir das Startdatum und das Enddatum auswählen. Wie überprüft man alle verfügbaren Zimmer zwischen Anfangs- und Enddatum?
meine SQL-Abfrage
select *
from roomcalendar
where day between '2016-08-26' and '2016-08-31' and avaroom != 0
Das Ergebnis wird so sein.
Ich benutze diese Abfrage
select *
from roomcalendar
where day between '2016-08-26' and '2016-08-31' and avaroom != 0
having count(*) = datediff('2016-08-31', '2016-08-26')
Ergebnis leer. es ist wahr. weil ich zwischen Anfangs- und Enddatum überprüfe, ob alle Zimmer verfügbar sind oder nicht.
Nächste Abfrage ich ändern 27 Datum 26 und Enddatum
select *
from roomcalendar
where day between '2016-08-26' and '2016-08-27' and avaroom != 0
having count(*) = datediff('2016-08-27','2016-08-26')
Ausgang beginnen 1 Reihe
Yes.it noch richtig sein. weil 26 Tage Zimmer zur Verfügung stehen.
erneut prüfen i Startdatum 26 und Enddatum 28.
select *
from roomcalendar
where day between '2016-08-26' and '2016-08-28' and avaroom != 0
having count(*) = datediff('2016-08-28','2016-08-26')
Yes.it es noch work.i denken leer, weil 28 Zimmer sind auch nicht richtig available.It.
Jetzt. Ich versuche, mich noch einmal zu ändern. Anfangsdatum 29 und Enddatum 30
select *
from roomcalendar
where day between '2016-08-29' and '2016-08-30' and avaroom != 0
having count(*) = datediff('2016-08-30', '2016-08-29')
Opps! Es zeigt kein Ergebnis. Ich denke 29 Zimmer sind verfügbar. Es wird die 1 Zeile angezeigt. Recht? So, wie Sie die richtige Abfrage erhalten?
erneut eine Überprüfung. Startdatum 29 und Enddatum 31. Mai, es wird Show 2 Ergebnis sein.
select *
from roomcalendar
where day between '2016-08-29' and '2016-08-31' and avaroom != 0
having count(*) = datediff('2016-08-31','2016-08-29')
aber es zeigt nur ein Ergebnis.
Wie mache ich die richtige Abfrage, um alle Tests zu bestehen?
Danke.
warum fügen Sie 'mit count (*) = datediff ('2016-08-31', '2016-08-29')'? Dies funktioniert nur, wenn das Ergebnis von datediff() mit der Anzahl der zurückgegebenen Zeilen übereinstimmt - in Ihrem Beispiel, wenn Sie einen einzelnen Tagesbereich abfragen und eine einzelne Zeile zurückgeben. versuchen Sie, den gesamten Teil der Abfrage wegzulassen! – derelict
@derelict ja bro. Jemand gibt mir das Problem zu lösen. Aber es funktioniert nicht. irgendeine Idee für neue Abfrage für meine Anforderung. Danke –
@MinKoKo: was genau willst du als Ausgang? Gesamtanzahl der verfügbaren Zimmer zwischen ausgewählten Daten oder verfügbare Anzahl von Zimmern mit Daten zwischen ausgewählten Daten? –