我有三个表,其中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
当前保存了3个表。这样做的目的是向我显示其他两个id=4
和id=5
,因为它们不在表reserv
中并且没有任何状态。希望现在更加清晰了。
最佳答案
您必须从表reserv指向要预订的表,我们称其为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)
*请注意,根据您的需要,根据我的需要使用“是”或“不是”,首先看起来您想要!=,后来您想要的是=