我有两个表,我想找到哪些订单在line_items表中有两个行,而且其中一行的sku是否为BALL。基本上试图找到所有只订购球的客户,无论BALL排的数量如何。每个订单至少需要两行,因为其中一行总是用于SHIPPING sku。
在下面的数据中,john和sam将是唯一返回的有效订单,因为他们的订单在line_items表中唯一的skus是BALL和SHIPPING(无论BALL数量)。我希望这些表连接起来,以便返回的数据包含order_id,customer,date_placed和qty。
TABLE orders
id customer date_placed
===========================
0 john 1/1/2000
1 bill 2/1/2000
2 sam 2/5/2000
TABLE line_items
id order_id qty sku
=========================
0 0 1 BALL
1 0 1 SHIPPING
2 1 1 BALL
3 1 1 ROPE
4 1 1 SHIPPING
5 2 3 BALL
6 2 1 SHIPPING
非常感谢你!
答案 0 :(得分:0)
如果我理解正确,你应该能够这样写:
SELECT o.id, customer, date_placed, li.qty
FROM orders o
INNER JOIN line_items li
ON o.id=li.order_id AND li.sku='BALL'
WHERE EXISTS(
SELECT order_id
FROM line_items tli
WHERE o.id=tli.order_id
GROUP BY order_id
HAVING count(*)=2)