2012-10-22 132 views
1

我試圖放在一起使用PHP和SQL SELECT語句,但我有一個困難時期試圖選擇我想要的物品。SQL選擇與匹配的行值

可以說我的表看起來像這樣...


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_id既有凱蒂·W和布萊恩·J用它。所以我選擇了credit_value = Brian J OR Katie W這就是結果。

在此基礎上選擇小,我可以看到我想要的答案是121但如何選擇呢?我想找到包含Katie W和Brian J的master_record_id ...

有沒有辦法讓我說:「選擇包含Katie W和Brian J的master_record_id」?

+0

'master_record_id' 121都凱蒂W和Brian J – patricko

回答

6

您需要使用自聯接

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' 
+0

這似乎是完美的工作。讓我把它寫入我的代碼,看看它是如何執行的。 – patricko

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 

YOou必須調整你的in子句having子句值的數量中的值。

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') 

它將返回所有master_record_id記錄同時具有凱蒂·W和布萊恩·J用它