2012-09-03 8 views
0

테이블에서 여러자가 조인을 대체하려고합니다. 나뿐만 열이있는 테이블 된 table_1이 무엇 자기의 최대 한계는 SQL다중 자체 조인 대체

의 테이블에 조인 고유 제한 조건가 UID 및 aaId의 조합이

uid number(10), 
a_name nvarchar(20), 
aaId number (10), 

.

데이터가 테이블에 있습니다. 각 aaId에는 약 90 개의 Uid가 있습니다. 내 문제는 내부의 수는 90로 증가 조인

select aaId from table_1 
    inner join table_1 t1 on t1.uid=9 and t1.a_name like 'a' 
    inner join table_1 t2 on t2.uid=8 and t2.a_name like 'ab' 
    inner join table_1 t3 on t3.uid=7 and t3.a_name like 'ac' 

처럼

지금 내 쿼리입니다. 테이블의 행이 약 2 lakh이 쿼리가 작동합니다. 또는 다른 것이 있으면이 많은 수의 자체 조인을 바꿀 수 있습니다.

도와주세요.

미리 감사드립니다.

+0

왜 내부 결합을 사용하고 있습니까? 어떤 목적으로 제공되고 있으며, 어떤 데이터를 추출하려고합니까? – Ankur

+0

예, 무엇을 하려는지 설명하십시오. 그것은 당신의 코드에서 전혀 명백하지 않습니다. 나는 당신이 테이블에 완전한 레코드 집합을 가지고있는 AaIds 만 선택하려한다고 생각하지만, 말하기는 어렵습니다. –

+0

예제 (데이터 샘플 및 예상 결과)가 가장 환영받을 것입니다. –

답변

0

우선 OR 문과 함께 WHERE 부분을 사용하지 않는 이유는 무엇입니까?

select aaId from table_1 
WHERE (table_1.uid=9 and table_1.a_name like 'a') OR 
(table_1.uid=8 and table_1.a_name like 'ab') OR 
(table_1.uid=7 and table_1.a_name like 'ac') 
0

가입 자체를 사용하는이 쿼리를 시도하고 조건을

요구 된 table_1의 T1에서 aaId을 선택 된 table_1의 T2 곳 (t1.uid = 9 'A'와 같은 t2.a_name) 또는 하세요 (t1.uid = 8 및 t2.a_name과 같이 'ab')