2017-11-14 11 views
0
A 형은 두 개의 값을 가지고 있으며, B 형 두 값

값을 선택

A | B 
-----|-------- 
val1 | val1 
val2 | val2 

내가 서브 쿼리를 수행하지만 dubolicate 값을 얻을 수있다 어디 테이블, 그것은이

A | B 
-----|-------- 
val1 | val1 
val1 | val2 
val2 | val1 
val2 | val2 
처럼 보이는 한

내 쿼리 :

SELECT A, B 
FROM 
(SELECT DISTINCT title as A 
FROM TABLE1 
INNER JOIN TABLE2 ON TABLE1_TABLE2_ID = TABLE2_ID 
INNER JOIN TABLE3 ON TABLE1_TABLE3_ID = TABLE3_ID 
WHERE TABLE_TABLE3_ID = 2008 AND TABLE_TYP LIKE 'A' AND TABLE1_AKTIV = 'Y') 
LEFT JOIN 
(SELECT DISTINCT title as B 
FROM TABLE1 
INNER JOIN TABLE2 ON TABLE1_TABLE2_ID = TABLE2_ID 
INNER JOIN TABLE3 ON TABLE1_TABLE3_ID = TABLE3_ID 
WHERE TABLE_TABLE3_ID = 2008 AND TABLE_TYP LIKE 'B' AND TABLE1_AKTIV = 'Y') 
ON 1 = 1 

당신에게 내가 중복없이 그것을 할 수있는 방법 어떤 아이디어가?

+1

출력을 복제 할 수 있도록 테이블 구조와 샘플 데이터를 포함하여 [MCVE]를 제공하면보다 효율적인 솔루션을 얻을 수 있습니다. 하나의 매개 변수 변경 및 결합으로 동일한 쿼리를 수행하는 것은 매우 비효율적이며 속도를 높이는 방법은 거의 확실합니다. – MT0

답변

1

문제는 ON 1=1입니다. 이렇게하면 모든 조합을 얻을 수 있습니다. ON A.id=B.id과 같은 몇 가지 참조 열을 사용하여 쿼리를 변경해야합니다.

+0

고마워, 고마워, 고마워! 정확히 무엇을 의미합니까? –

+0

@EmmaW. 모든 조합이 '참'인 것은 단지 '결합 조건'일뿐입니다. 다음 예제를 참조하십시오. https://bhanuchander210.github.io/SQL-Left-Join/ –