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

Mysql 从返回一组值但忽略次要条件的表中选择,mysql,Mysql,我正在尝试编写一个SQL语句来检查数据库中房间的可用性。它需要完成以下工作: 1) 检查Tsu roompref、Tsu room和Tsu request以查看房间是否已预订 如果房间根本没有预订,那么在签入tsu roompref.id并与tsu request.id进行比较时,将找不到tsu请求中的日id和时段id 如果找不到房间入口(即未请求),则房间是免费的 2) 如果在比较ts\u请求和ts\u roompref后发现day\u id和period\u id值,则意味着我们需要查看

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

1) 检查Tsu roomprefTsu roomTsu request以查看房间是否已预订

  • 如果房间根本没有预订,那么在签入tsu roompref.id并与tsu request.id进行比较时,将找不到tsu请求中的日id时段id
  • 如果找不到房间入口(即未请求),则房间是免费的
2) 如果在比较ts\u请求ts\u roompref后发现day\u idperiod\u id值,则意味着我们需要查看ts\u 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";
上述代码未考虑到该事实可能被挂起、分配或拒绝。它只是假设如果可以找到请求id,房间就被预订了。如何改进以检查请求状态(如有必要)


这是我的SQL FIDLE:

在查询中,应该有接近“LIKE”条件的百分号

... day_id LIKE "%1%" AND period_id LIKE "%1%" ... 日期id为“%1%”和期间id为“%1%”
谢谢你的回答@m3sh知道如何实现我的问题中列出的条件吗?有没有理由从1中减去计数?顺便说一下,不要对整型列做“喜欢”的事情。只要简单地检查它是否相等就可以了<代码>选择ts_room.*、ts_roompref.*、ts_request.*,ts_分配。*从ts_room内部加入ts_roompref ON ts_roompref.id=ts_roompref.room_id内部加入ts_请求ts_请求ts_请求id=ts_请求.id内部加入ts_分配ON ts_请求id=ts_分配.request_id其中ts_分配.status='Pending'和ts_请求.day_id=2包含所有列,您可以选择所需的列。