我有一個關於下面的查詢問題不工作:SQL OR NOT EXISTS不起作用
{thistable}.id IN (
SELECT id
FROM fab_booking_slots AS slots
WHERE id = '{fab_booking___book_starttime_raw}'
OR NOT EXISTS (
SELECT id +1 FROM (
SELECT taken.book_date, slots.*, count(taken.book_date) AS nbre
FROM fab_booking_taken AS taken
CROSS JOIN fab_booking_slots AS slots
WHERE NOT ((slots.heuredepart_resa < taken.book_end
AND slots.heurearrivee_resa > taken.book_start))
AND DATE(taken.book_date) = DATE('{fab_booking___book_bookingdate}')
GROUP BY slots.id) AS x
WHERE nbre = (
SELECT count(taken.book_date)
FROM fab_booking_taken AS taken
WHERE taken.book_date = x.book_date)
)
)
Order BY id ASC
此查詢應該從下拉菜單中已經存在到數據庫返回的值,如果它們是可用插槽,可用插槽。
當我獨立運行2 SELECT時,它們正在工作。
希望在這裏有一些專業知識,因爲我找不到原因,我卡住了。
此線程遵循以下線索:
表可以在那裏下載。
非常感謝您的支持。
乾杯,
馬克
嗨Mendosi, 非常感謝您答覆和解決方案,因爲sql對我來說仍然「複雜」。 現在,當fab_booking_taken中的預訂已存在所選日期時,查詢工作正常。 但是,如果不存在預訂,則不會返回任何值。查詢應該返回fab_booking_slots表中的所有可用插槽。 – marcq
@marcq何時預訂尚不存在爲{fab_booking ___ book_bookingdate}傳遞了什麼值? – mendosi
下拉是用ajax實現的。當用戶更改日期時,則會顯示下拉菜單。它工作正常,當我選擇一個預訂已經存在的日期,然後顯示可用的插槽。 – marcq