gpt4 book ai didi

MYSQL 如果至少有一个结果不匹配,则将其从

转载 作者:行者123 更新时间:2023-11-29 10:12:33 25 4
gpt4 key购买 nike

我需要进行非常复杂的搜索

上下文:我有 3 个表:rooms、reservation 和 room_reservation。第一个包含酒店房间的所有信息,第二个包含所有预订的信息,第三个是因为预订有多个房间。

我需要知道在特定日期有哪些房间可用,我真的很接近,我需要如果至少一项数据与搜索条件不匹配,则不会显示相关房间。

这是我的查询:

SELECT DISTINCT hab.* FROM habitacion hab 
LEFT OUTER JOIN habitacion_reserva habr ON habr.id_habitacion = hab.id
LEFT OUTER JOIN reserva res ON res.id = habr.id_reserva
WHERE hab.tipo = 1
AND (((( '2018-06-10' not between res.fecha_ingreso and res.fecha_salida) AND ( '2018-06-17' not between res.fecha_ingreso and res.fecha_salida))
OR (res.fecha_ingreso is null OR res.fecha_salida is null)) OR ((( '2018-06-09' between res.fecha_ingreso and res.fecha_salida) OR ( '2018-06-17' between res.fecha_ingreso and res.fecha_salida)) AND res.estado = 4))

理论上,查询有效,但当我有很多预订时,查询只会返回所有房间。

最佳答案

尝试这样的事情(简化)

Select * FROM rooms 
LEFT JOIN room_reservation ON (rooms.id = rooms_reservation.id)
LEFT JOIN reservations ON (rooms_reservation.id = reservation.id)
reservation
WHERE 1=1
...
AND whateverfield = 1
....
AND ('2018-06-09' NOT BETWEEN reservation.start AND reservation.end)
AND ('2018-06-17' NOT BETWEEN reservation.start AND reservation.end)

GROUP BY rooms

关于MYSQL 如果至少有一个结果不匹配,则将其从,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50708233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com