抱歉,我不确定如何为这个问题加上标题,但我会尽力解释我的问题。我的数据库中有两个表,如下所示:

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;

09-26 08:23