0

申し訳ありませんが、この質問にタイトルを付ける方法がわかりませんでしたが、私の問題を説明するために最善を尽くします. DB には、次のような 2 つのテーブルがあります。

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

私がやろうとしているのは、DB にクエリを実行して、APPLICATIONS テーブルからすべての情報を取得し、そのアプリケーションに UNSATISFIED 要件があるかどうかを表す追加のフィールドを取得することです。クエリは次のようなものを返します。

app_id | data1 | data2 | meets_all_requirements
------------------------------------------------
1      | foo   | foo   | false
2      | bar   | bar   | true

1 つのクエリでこれを行う最善の方法は何でしょうか? これに対応するためにテーブル/関係を設定するより良い方法はありますか?

どんなアドバイスでも大歓迎です!

4

2 に答える 2

2

is_satisfiedそれがブールフィールドであると仮定すると、すべての条件でmin()effective が実行されます。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;
于 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 に答える