从表中选择返回一组值但忽略次要条件

时间:2013-02-19 13:39:00

标签: mysql

我正在尝试编写一个SQL语句来检查数据库中房间的可用性。它需要完成以下任务:

1)检查 ts_roompref ts_room ts_request 以查看是否已预订房间

  • 如果房间没有预订,那么当选中 ts_room_pref.request_id 时,将无法找到ts_request中的 day_id period_id ts_roompref 中,并与 ts_request.id 进行比较。
  • 如果找不到房间入口(即没有要求入住),那么房间是免费的

2)如果在比较 ts_request ts_roompref 后找到 day_id period_id 值,则表示我们需要查找 ts_allocation 表来检查房间的状态

  • 如果请求状态为“待定,失败,拒绝”,则表示该房间尚未分配且仍可用
  • 但如果任何请求状态=其他任何内容,则表示该房间已被分配。

我一直在努力实现这个逻辑几个小时。这是我到目前为止所做的工作:

select 1- count(distinct rp.Id) from 
ts_roompref rp, ts_request rq
where rp.room_id= "D.0.02" AND rq.id = rp.request_id
AND day_id like "1" AND period_id like "1";

上述代码未考虑事实可能是待定,分配或拒绝。如果可以找到request_id,它只是假设房间已被预订。如何改进它以检查请求状态(如有必要)?

这是我的SQL小提琴:http://sqlfiddle.com/#!2/e1021/48

1 个答案:

答案 0 :(得分:0)

查询中“LIKE”条件附近应该有百分号

... day_id LIKE "%1%" AND period_id LIKE "%1%"