2012-03-02 2 views
0

IDX, WHERE X = 'Y' 열이있는 테이블에서 모든 ID를 선택해야합니다. 각각 ID 각각에 대해 다른 테이블의 내용을 찾아야합니다.다른 쿼리를 사용하는 간단한 SQL 쿼리

ID이 없으면 최종 결과에서 아무 행도 가져 오지 않습니다.

ID이 존재하는 경우, 행을 가져 오는 지 알아내는 논리를 만들고 싶습니다. 단순화를 위해 논리가 다음과 같다고 가정하십시오. Q > 0 인 경우.

따라서 위의 두 가지 이유 중 하나로 인해 실격 처리되기 때문에 최종 결과는 ID의 열에 불과합니다.

감사합니다. 내가 질문을 받았다면

+2

질문의 형식을 편집하십시오. 'code' 및'blockquote' 편집기 옵션을 사용하고 줄 바꿈을하십시오. –

답변

1

JOIN의가 만들어진 것입니다.

SELECT table1.* FROM table1 
INNER JOIN table2 
    ON table1.ID = table2.table1_ID 
    AND table2.Q > 0; 

이 (ID가) 표에서 모든 레코드를 선택하고 표 2에 일치하는 레코드가없는 또는 Q가없는 모든 레코드를 제거합니다> 0

1

바로 이것이 당신이 찾고있는 무슨 수 있습니다 :

select id from your_table 
where X = 'Y' 
and id in (select id from other_table where Q > 0) 
1

당신이 사용할 수있는 하위 쿼리 :

SELECT id FROM table1 WHERE table1.id IN (SELECT q FROM table2 WHERE table2.q > 0) AND table1.x='y'

SQL은 가장 바깥 쪽 쿼리의 결과 (괄호 부분)가 하위 쿼리에 있는지 확인하고 그렇지 않은 경우 아무 것도 반환하지 않습니다.