2012-10-22 6 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이지만 선택할 수있는 방법은 무엇입니까? 케이티 W와 브라이언 J가 모두 포함 된 master_record_id을 찾고 싶습니다.

케이티 W와 브라이언 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 Katie W와 Brian J가 모두 기록되어 있습니다.

관련 문제