我有一张包含各种相关信息的建筑物表格,例如address
,building_id
等。
我还有一份报告表,其中包含任何可能与这些建筑物有关的错误。 (此表非常庞大,因为每个报告都会在此处转储。)每个报告的状态为0 =已关闭或1 =有效。注意:building_id
也在每条记录中,因此可以通过这种方式捆绑在一起。
最后一部分是该人使用id登录,该ID控制该人看到的建筑物。
我想要做的是建立一个有开放报告的建筑物清单。现在,它设置为运行查询以获取user_id
的所有建筑物;然后运行查询以获取所有打开的报告。
我的思路是:
SELECT *
FROM buildings
WHERE user_id = $currentUser AND (SELECT * FROM reports WHERE building_id = $buildingID and (count reports > 0))
答案 0 :(得分:0)
你可以做INNER JOIN
:
SELECT b.*
FROM buildings b
INNER JOIN (SELECT DISTINCT building_id FROM reports WHERE status = 1) r
ON B.building_id = r.building_id
答案 1 :(得分:0)
如果不了解您的架构,请尝试以下方法:
SELECT * FROM buildings WHERE user_id = $currentUser AND building_id IN
(SELECT distinct building_id FROM reports WHERE status = 1)