抱歉,我不确定如何为这个问题加上标题,但我会尽力解释我的问题。我的数据库中有两个表,如下所示:
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表中获取所有信息,以及一个额外的字段,该字段表示该应用程序是否存在未满足的要求,因此我的查询将返回如下内容:
app_id | data1 | data2 | meets_all_requirements
------------------------------------------------
1 | foo | foo | false
2 | bar | bar | true
用一个查询执行此操作的最佳方法是什么?有没有更好的方法来设置我的表/关系来适应这种情况?
任何意见是极大的赞赏!
最佳答案
假设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;