2017-02-09 1 views
0

주문, 주문 제품 및 제품이 3 개 있습니다. 나는 특정 제품이 포함 된 mysql 주문

SELECT o.orders_id, p.products_id, p.item_type 
from orders o 
join orders_products op on o.orders_id = op.orders_id 
join products p on op.products_id = p.products_id 

지금 난 단지 만이 주문을 얻으려면 .. 각 주문 제품을 얻기 위해 그들에 합류했다 p.item_type = 1 또는 p.item_type = 2 (주문 유형의 제품이있는 경우 1, 2 및 3은 표시되지 않음, 제품 유형 1 또는 2 인 주문 만 해당)

답변

0

주문 만 원하는 경우 group byhaving을 사용할 수 있습니다. orders 테이블이 필요하지 않은 것을

select op.orders_id 
from orders_products op join 
    products p 
    on op.products_id = p.products_id 
group by op.orders_id 
having sum(p.item_type = 1) > 0 and 
     sum(p.item_type = 2) > 0 and 
     sum(p.item_type not in (1, 2)) = 0; 

참고 : 다음은 항목 1, 2 및 없음 다른 사람과 주문을 가져옵니다.

당신은 1 또는 2에 대한이 having 절없이 다른 사용할 수 있습니다,

having sum(p.item_type in (1, 2) > 0 and 
     sum(p.item_type not in (1, 2)) = 0; 
+0

감사 합 안 (p.item_type = 1)> 0 또는 합 (p.item_type = 2) 우리는 유형 1 및/또는 2를 가진 주문을 원하기 때문에 우리는 원하기 때문에, 둘 다 필요하지는 않습니까? – david

+0

고마워요. – david

+0

@ David. . . 이 대답을 받아 들일 수없는 이유가 있습니까? 나는 당신이 다른 대답을 받아들이지 않았 음을 확인합니다. –

관련 문제