你好傢伙正試圖顯示給定日期的所有可用汽車列表,我嘗試使用BETWEEN
但未成功。 在車表中添加另一個字段(狀態)並查詢狀態是一個好主意。有一個好方法嗎?或者使用return_date之間的booking_date顯示效果更好?列出給定日期的所有可用汽車SQL
預訂:
id customer_id car_id booking_date return_date time_stamp
------ ----------- ------ ------------ ----------- ----------------
1 2 5 2015-11-04 2015-11-12 15.06.10 20:10
2 3 2 2015-11-02 2015-11-13 15.06.10 20:10
3 1 11 2015-11-05 2015-11-16 15.06.10 20:10
4 4 8 2015-11-10 2015-12-16 15.06.10 20:10
5 0 0 0000-00-00 0000-00-00 15.06.10 20:10
CarType:
id car_type_id branch_id registration_number color date_of_manifacturing base_price_per_day
------ ----------- --------- ------------------- ------- --------------------- --------------------
1 1 1 BG-123-431 Bela 2010-11-15 30
2 2 1 BG-A32-212 Metalik 2015-11-04 30
3 3 2 PA-332-421 Metalik 2008-05-03 35
4 4 1 SM-312-542 Crna 2014-06-01 35
5 5 1 BG-4393-54 Crna 2012-05-03 50
6 6 1 NS-423-64 Bela 2010-10-08 50
汽車:
id car_type_id branch_id registration_number color date_of_manifacturing base_price_per_day
------ ----------- --------- ------------------- ------- --------------------- --------------------
1 1 1 BG-123-431 Bela 2010-11-15 30
2 2 1 BG-A32-212 Metalik 2015-11-04 30
3 3 2 PA-332-421 Metalik 2008-05-03 35
4 4 1 SM-312-542 Crna 2014-06-01 35
5 5 1 BG-4393-54 Crna 2012-05-03 50
6 6 1 NS-423-64 Bela 2010-10-08 50
我的所有預訂我列出這樣的:
SELECT BOOKING.BOOKING_NUMBER, BOOKING.BOOKING_DATE,
BOOKING.RETURN_DATE, AGENCY.NAME, CAR.REGISTRATION_NUMBER,
CAR_TYPE.NAME
FROM BOOKING
JOIN AGENCY ON BOOKING.AGENCY_ID = AGENCY.ID
JOIN CAR ON CAR.ID = BOOKING.CAR_ID
JOIN CAR_TYPE ON CAR_TYPE.ID = CAR.CAR_TYPE_ID
但是,對於所有可用的車輛,我不知道。 任何示例?
我認爲對於數據量較大的'NOT IN'數據較慢? Beeter使用'不存在' – Ivan
我只是給你最安全的解決方案。您也可以嘗試在@checkDate和booking_date和return_date之間'左連接BOOKING,但是因爲我沒有數據不想猜。這樣你就可以''NULL'''沒有預訂'汽車 –
我認爲如果你有'booking_date和return_date'的索引就可以。其他的解決方案是使用'EXISTS',但只有通過測試你的數據才能知道什麼是最好的 –