0

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

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

使用一个查询执行此操作的最佳方法是什么?有没有更好的方法来设置我的表/关系以适应这种情况?

任何意见是极大的赞赏!

4

2 回答 2

2

假设这is_satisfied是一个布尔字段,那么min()Effectiveand在所有条件下执行:

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;
于 2013-07-29T22:31:27.213 回答
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
于 2013-07-29T22:31:09.070 回答