2013-10-07 2 views
1

다음과 같은 문제가 있습니다.Select는 동일한 행을 여러 번 반환합니다.

DB에는 두 개의 테이블이 있습니다. 첫 번째 테이블의 한 열에있는 값은 두 번째 열의 두 개의 다른 열에 나타날 수 있습니다.

TABLE_A : 열 Print_group 표 _B : 열 Print_digital 및 Print_offset

다른 행과 Table_A의 Print_group 열에서의 값은 하나 개의 행에 표시 될 수있는 다음

그래서 구성은 Table_B하지만 다른 열에.

SELECT DISTINCT * FROM Table_A 
INNER JOIN B ON (Table_A. Print_digital = Table_B.Print_group OR 
Table_A.Print_offset = Table_B.Print_group) 

문제는이 쿼리는 Table_A 두 번에서 같은 행을 반환한다는 것입니다 :

나는 다음과 같은 쿼리를 가지고있다.

내가 뭘 잘못하고 있니? 올바른 쿼리는 무엇입니까?

는 당신의 도움을 주셔서 감사합니다 내가 제대로 질문을 이해 해요 경우, 당신은 단지 Table_A에서 온 귀하의 필드를 명확히 할 필요가

+0

조인 할 수 있습니다. 예제 데이터를 보여줄 수 있습니까? –

+0

테이블 A와 테이블 B를 조인하고 테이블 B에 더 많은 열이있는 경우 B를 조인 할 때마다 테이블 A의 행을 복제합니다.이 경우 테이블 A에서 중복 된 행이 비어 있었습니까? –

+0

그래서 Table_A의 Print_group 열은 첫 번째 행에 1, 두 번째 행에 2라는 값을 갖고 있다고 가정 해 봅시다. Table_B에서는 단 하나의 행 (지금은 간단하게 유지)입니다. Table_B의 Print_digital 열에는 Table_A의 첫 번째 행에있는 값 1이 들어 있고 Table_B의 Print_offset 열에는 값 2가 있습니다 (값은 Table_B의 같은 행에 있습니다). 위에서 언급 한 쿼리를 실행하면 두 행을 포함하는 결과 집합이 반환됩니다. 두 번 반환 된 Table_B 행 중 하나입니다. – user2852877

답변

0

:

SELECT DISTINCT A.* 
FROM Table_A A 
    INNER JOIN B ON A.Print_digital = B.Print_group 
     OR A.Print_offset = B.Print_group 

편집 :

의견이 있으면 그냥 필요한 것 같습니다 SELECT DISTINCT B.*

SELECT DISTINCT B.* 
FROM Table_A A 
    INNER JOIN B ON A.Print_digital = B.Print_group 
     OR A.Print_offset = B.Print_group 
+0

답장을 보내 주셔서 감사합니다.나는 오후에 시험해보고 결과를 알려 줄거야 :-) – user2852877

+0

와우 !!! :-) 한번 더 감사드립니다! 그것은 내가 필요한 것입니다. 그것은 매력처럼 작동합니다! – user2852877

+0

@ user2852877 - np, 도움이 되니 기쁩니다! – sgeddes

0

나는 또 다른 질문은 ... 첫째, 명확하게하기 위해, 올바른 쿼리 버전은

이 A.Print_digital = B.Print_group ON B 가입 Table_A INNER * FROM 을 DISTINCT A.을 선택입니다했습니다 또는 A.Print_offset = B.Print_group.

B 테이블에서 한 열을 반환하려면 다시 중복 행을 반환해야합니다. 내 쿼리 (나쁜 일)는 다음 중 하나입니다 :

A.Print_digital = B.Print_group 또는 A.Print_offset = B.Print_group ON B 가입 Table_A INNER로부터, B.Id 을 DISTINCT A.의 *를 선택

관련 문제