抱歉,我不知道如何标题这个问题,但我会尽力解释我的问题。我的数据库中有两个表格如下:
APPLICATIONS:
app_id | data1 | data2
----------------------
1 | foo | foo
2 | bar | bar
APP_REQUIREMENTS:
app_id | requirement | is_satisfied
--------------------------------------
1 | requirement1 | false
1 | requirement2 | false
2 | requirement1 | true
2 | requirement2 | true
我要做的是查询我的数据库以获取APPLICATIONS表中的所有信息以及一个额外字段,该字段表示该应用程序是否有任何UNSATISFIED要求,因此我的查询将返回如下内容:
app_id | data1 | data2 | meets_all_requirements
------------------------------------------------
1 | foo | foo | false
2 | bar | bar | true
使用一个查询执行此操作的最佳方法是什么?是否有更好的方法来设置我的表/关系以适应这种情况?
非常感谢任何建议!
答案 0 :(得分:2)
假设is_satisfied
是一个布尔字段,那么min()
在所有条件下都有效and
:
select a.*, min(is_satisfied) as all_satisfied
from Application a left outer join
App_Requirements ar
on a.app_id = ar.app_id
group by a.app_id;
如果值实际上是字符串,则可以执行以下操作:
select a.*, min(is_satisfied = 'true') as all_satisfied
from Application a left outer join
App_Requirements ar
on a.app_id = ar.app_id
group by a.app_id;
答案 1 :(得分:0)
select a.*, sum(not r.is_satisfied) = 0 as meets_all_requirements
from applications a
left join app_requirements r on a.app_id = r.app_id
group by a.app_id