Ich habe zwei Tabellen in der DatenbankSql Datum der gewünschten Daten zwischen Reihe von Terminen
Zimmer: enthalten Details des Zimmers
Buchung: containd Buchungsinformationen über Zimmer
Zimmer:
Buchungen:
+----+------------+----------+---------------+--------------+---------------+---------+----------------+
| id | booking_id | hotel_id | room_category | checkin_date | checkout_date | room_no | booking_status |
+----+------------+----------+---------------+--------------+---------------+---------+----------------+
| 1 | 1 | 1 | delux | 2016-08-25 | 2016-08-30 | 1 | y |
| 2 | 2 | 1 | delux | 2016-08-25 | 2016-08-28 | 2 | y |
+----+------------+----------+---------------+--------------+---------------+---------+----------------+
Jetzt schreibe ich eine Abfrage:
select * from rooms
where
hotel_id =1 and
room_category="delux"
and id not in(
select room_no
from bookings
where
checkin_date between '2016-08-25' and '2016-08-28'
or
checkout_date between '2016-08-25' and '2016-08-28'
);
Problem: 1. während 26-27 Ergebnis für die Verfügbarkeit der Suche enthält Zimmer kein 1und 2 sowie
was genau ist das Problem? die innere Abfrage wird nichts für 26/27 zurückgeben, und Sie verwenden 'nicht in', also sollten alle zurückgegeben werden –
Das Problem ist nicht klar! –
@Belal seine Erzählung ist nicht sehr gut, aber das Problem ist klar, wenn er sucht für die 26. bis 27. anstelle der 25ht & 28th, wie er dann zeigt das checkin_date ist nicht zwischen dem 26. und 27. und auch nicht das checkout_date. Er hat seine BETWEN falsch organisiert und berücksichtigt auch nicht, wenn checkin_date <26th und checkout_date> 27th sind. – Matt