2

phpとsqlを使用してSELECTステートメントをまとめようとしていますが、必要なアイテムを選択するのに苦労しています。

私のテーブルがこのように見えるとしましょう...


master_record_id     credit_id     credit_value
118                  5             Brian J
119                  5             Brian J
120                  7             Katie W
121                  5             Brian J
121                  7             Katie W
125                  7             Katie W

master_record_idKatieWとBrianJの両方が含まれているものを見つけようとしています。だから私はを選びました、credit_value = Brian J OR Katie Wそしてこれは結果です。

この小さな選択に基づいて、私が望む答えはであること121がわかりますが、どうすればそれを選択できますか?master_record_idKatieWとBrianJの両方を含むを見つけたい...

「KatieWとBrianJの両方を含むmaster_record_idを選択してください」と言う方法はありますか?

4

3 に答える 3

7

自己参加を使用する必要があります:

SELECT a.master_record_id
FROM tablename a JOIN tablename b USING (master_record_id)
WHERE a.credit_value = 'Brian J'
AND b.credit_value = 'Katie W'
于 2012-10-22T16:44:41.137 に答える
1
select master_record_id
from your_table
where credit_value in ('Brian J', 'Katie W')
group by master_record_id
having count(distinct credit_value) = 2

having句の値を句の値の数に調整する必要がありますin

于 2012-10-22T16:44:30.690 に答える
0

これはパフォーマンスのためにこれを行うための最良の方法ではありませんが、とにかくそれは機能するはずです:

select master_record_id, credit_id, credit_value
from your_table
where master_record_id in (
     select master_record_id from your_table where credit_value = 'Brian J')
and master_record_id in (
         select master_record_id from your_table where credit_value = 'Katie W')

KatieWとBrianJの両方を含むすべてのmaster_record_idレコードを返します。

于 2012-10-22T16:52:30.510 に答える