我有一个关于下面的查询问题不工作: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