我有三张表table_2
是table_1
和table_3
表
table_id
...
...
table_rest
rest_id
table_id
...
其余
rest_id
...
...
选择我使用的查询
SELECT m.table_id, table_name
FROM tables m
JOIN table_rest mr
ON m.table_id = mr.table_id
WHERE rest_id = '$rest_id'
我现在需要的是加入此查询另一个表reserv
id
...
status
要检查状态是0
,1
还是2
,如果没有状态则不显示任何内容,这意味着没有任何记录可以显示给我。换句话说,这是一个保留的系统,我在屏幕上显示几个表。如果状态为0,1,2则表示采用该表。如果没有找到状态,则表示没有表记录,可以向用户显示。
编辑:示例方案
tables
table_id
1
2
3
4
5
rest
rest_id
1
2
table_rest
table_id | rest_id
1 2
2 2
3 2
4 2
5 2
因此,上面的查询将为5 tables for rest_id=2
生成rest_id=1
而不生成reserv
所以现在我有了另一张桌子
id | status
1 0
2 1
3 2
reserv
所以在这个表中id=4
目前保存了3个表。我的想法是向我展示另外两个id=5
和reserv
,因为它们不在表{{1}}中,并且没有任何状态。
希望现在有点清楚了。
答案 0 :(得分:2)
如果您提供样本数据或sqlfiddle
,情况会更好。根据我的意识:这是你想要的:
select tables.table_id, rest.rest_id
from tables
left join table_rest on table_rest.table_id = tables.table_id
left join rest on rest.rest_id = table_rest.rest_id
where rest.rest_id = '$rest_id'
and tables.table_id not in (select id from reserv)
答案 1 :(得分:2)
你必须从表格储备点指向哪个表格预订,让我们称之为reserv.table_id
SELECT m.table_id, table_name
FROM tables m
JOIN table_rest mr
ON m.table_id = mr.table_id
left join reserv
on reserv.table_id = m.id
WHERE rest_id = '$rest_id'
and reserv.status is null (*note)
* note 使用'是'或者'不是'根据你的需要,据我所知,首先看来你想要的!=,之后你想要的是=