2013-06-24 6 views
0

여기에 (나를 위해) 머리 - 아마추어가의 ...크로스 테이블 SQL 쿼리는 제품 설명을 내가 두 테이블을 가지고 B. A가 포함

키워드에 따라 결과의 기록에서 제외, B 제품 코드를 포함, 수량 , 그리고 계정. 주름은 B가 제품 코드에 상위, 하위 관계를 가지고 있다는 것입니다.

계정, 제품, 설명 및 수량 (제품의 설명에 키워드가있는 경우를 제외하고 제품 Qty의 값이 0 인 경우)을 볼 수있는 결과 세트를 함께 넣으려고합니다. 나는 상관하지 않는다).

SELECT Bp.Account, Bp.Product, A.Description, Bp.Qty FROM B 
AS Bp JOIN A as Prod ON (Bp.Product = Prod.Product) 
WHERE EXISTS (Select * from B AS Bc 
       WHERE Bp.Account = Bc.Account 
       AND Qty = 0) 

을 그리고 이것은 매우 좋은 결과 집합 반환 :

그래서, 여기 내 쿼리는 지금의

Account Product Description Qty 
ABC  XYZ  DESC-BLAH 1 
ABC  XYY  DESC-DEE 0 
ABC  ZXY  DESC-BILP 1 
BDE  XAZ  DESC-OOPS 1 
BDE  XYY  DESC-DEE 0 
BDE  ZXY  DESC-BLIP 1 

그래서 내가-OOPS DESC를 제외 할 말을 할 수 있으며 모든 제품을 내 결과 집합에서 그것에 관한. 보고 싶습니다 :

Account Product Description Qty 
ABC  XYZ  DESC-BLAH 1 
ABC  XYY  DESC-DEE 0 
ABC  ZXY  DESC-BILP 1 

단일 쿼리에서이 작업을 수행 할 수 있습니까?

미리 감사드립니다. 아마도 그것이 당신을 위해 작동하지 않는 이유를 잘 모르겠어요

SELECT Bp.Account, Bp.Product, A.Description, Bp.Qty FROM B 
AS Bp JOIN A as Prod ON (Bp.Product = Prod.Product) 
WHERE EXISTS (Select * from B AS Bc 
       WHERE Bp.Account = Bc.Account 
       AND Qty = 0) 
    AND Bp.ACCOUNT NOT IN (SELECT ACCOUNT FROM Table WHERE Description = 'DESC-OOPS' 

있지만 :

+0

어떻게 부모 자식 관계에있다 '테이블 B'가 설립 됐나요? '계정'에 의한 것인가? – unlimit

+0

부모 자식 관계는 Product.ID에 의해 설정됩니다. 더 간단하게 유지하기 위해 생략했습니다. :) – user1729889

답변

1

아마 당신은 당신의 WHERE 조건에 추가 할 수

SELECT * 
FROM (SELECT Bp.Account, Bp.Product, A.Description, Bp.Qty 
     FROM B AS Bp 
     JOIN A as Prod 
     ON (Bp.Product = Prod.Product) 
     WHERE EXISTS (Select * from B AS Bc 
        WHERE Bp.Account = Bc.Account 
        AND Qty = 0) 
    )sub 
WHERE ACCOUNT NOT IN (SELECT ACCOUNT FROM Table WHERE Description = 'DESC-OOPS' 
+0

흠, 이것을 시도하고 오류 메시지가 나타납니다. EXISTS에 부속 조회가 도입되지 않은 경우 선택 목록에 하나의 표현식 만 지정할 수 있습니다. 그래서 EXISTS 절에 포함 시키려고했으나 주사위는 사용하지 않았습니다. – user1729889

+0

이상하게도, 하위 쿼리 'ACCOUNT'의 SELECT 목록에는 단 하나의 표현식 만 있습니다. –

+0

알았어, 당신이 제공 한 쿼리가 작동하게되었지만 지금은 하나의 레코드 만 제외하고 모든 관련 상위 레코드는 억제하지 않습니다. 절은 이제 'WHERE EXISTS (선택 B * B에서 어디 Bp.Account = Bc.Account 및 Qty = 0) 및 존재 (선택 B에서 B. * 설명'% OOPS % '좋아하지 않아') ' – user1729889