2017-02-09 17 views
0

私は3つのテーブルorders、orders_products、およびproductsを持っています。私は特定の製品を使用した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 OR 合計(p.item_type = 2)であってはなりません1と2のタイプの注文が必要なので、私たちは必要なので、両方とも必要ではありません。 – david

+0

ありがとうございました – david

+0

@David。 。 。この回答を受け入れられない理由はありますか?私はあなたが他の答えを受け入れなかったことに気付きました。 –

関連する問題