查找具有两个条件的匹配列的所有行

时间:2014-04-08 01:08:13

标签: mysql

我有两个表,我想找到哪些订单在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

非常感谢你!

1 个答案:

答案 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)