2014-04-07 2 views
0

자, 이제는 기쁨없이 검색 한 후 도움을 얻을 수 있기를 바랍니다.'x'가 표시 될 때 항목 표시

그래서 'orderno'키가 있고 'orderno'에는 여러 항목이 있습니다. 각 항목에는 상태가 있습니다. 상태가 'x'인 항목을 포함하는 주문 번호 만 표시하는 Q를 가져 오려고합니다.

그래서 3 개의 항목이 있고 1 개만 상태 'x'를 표시하면이 항목을 모두보고 싶습니다. 그 하나.

기본적으로 x 값을 표시하지 않는 주문/항목을 제거하십시오.

그래서 표

orderno/Itemno/Itemstatus 
1   1   y 
1   2   x 
2   1   z 
3   1   y 
3   2   x 
3   3   y 
4   1   y 
4   1   y 

편집 : 폐쇄

그래서 기본적으로 문자를 열고 대표, 또는 진행중 ... 나는이 있고 항목이 항목에서뿐만 아니라 폐쇄 단지 순서를보고 싶어 진도 때문에 나는 왜 그 주문이 거기에서 부분적으로 만 완성되고있는지를 볼 수있다. 아직도 아마 여기에 말이되지 않습니다. Grrrr.

상태가 'x'인 항목이 포함 된 주문의 경우 ORDER # 및 모든 품목 #을 반환해야합니다.

+0

편집 된 내용 – user3486773

답변

2
SELECT * FROM Order_Table 
WHERE orderno IN 
(SELECT orderno FROM Order_Table WHERE Itemstatus = 'x') 

이너 쿼리 상태 'x'와 외부 하나 그 주문의 모든 세부 사항을 반환로 모든 주문을 반환합니다.

+0

이것은 항목과의 관계를 보여주지 않습니다. – paqogomez

+0

@paqogomez 나는 asker의 편집이 지금 그것을 분명히했다고 생각한다! – KrazzyNefarious

+1

그것은 실제로 않습니다. :) 좋은 추측. – paqogomez

1

나는 IN 또는 JOIN 버전보다 더 나은 것을 선호합니다. 그것은 일반적으로 더 빠릅니다.

sqlfiddle이 추가되었습니다.

CREATE TABLE table1(orderno INT, Itemno INT, Itemstatus CHAR(1)) 

INSERT INTO table1 VALUES 
(1,1,'y') 
,(1,2,'x') 
,(2,1,'z') 
,(3,1,'y') 
,(3,2,'x') 
,(3,3,'y') 
,(4,1,'y') 
,(4,1,'y') 

SELECT * 
    FROM table1 a 
WHERE EXISTS(SELECT 1 
       FROM table1 b 
       WHERE b.OrderNo = a.OrderNo 
       AND b.Itemstatus='x') 
관련 문제