与特定产品的mysql订单
问题描述:
我有3个订单,orders_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的订单)
答
如果您只想订购,可以使用group by
和having
。下面得到与项目1和2,没有其他的命令:
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;
注意,不需要orders
表。
可以使用此having
子句1或2且无其它:
having sum(p.item_type in (1, 2) > 0 and
sum(p.item_type not in (1, 2)) = 0;
感谢,不应该是总和(p.item_type = 1)> 0或 总和(p.item_type = 2)既然我们想要,因为我们希望订购类型1和/或2,而不是两者都必需? – david
非常感谢 – david
@David。 。 。有没有理由不接受这个答案?我注意到你没有接受任何其他答案。 –