在MySQL中检查多行

时间:2011-08-19 14:04:12

标签: mysql sql

我有一张包含各种相关信息的建筑物表格,例如addressbuilding_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))

2 个答案:

答案 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)
相关问题