MySQL:左连接只有一行和总和

时间:2018-03-02 13:29:48

标签: mysql sql

可能只有一行没有子查询左边连接?

我需要获取产品统计信息,而某些产品有多个组。 因此,产品数量不正确。

SELECT COUNT(p.id) AS total_product, SUM(p.price) AS total_price
FROM product p
LEFT JOIN attribute_group a ON
a.product_id = p.id
WHERE p.created_at >= "2018-01-01" AND (a.id = 1 OR a.id = 2)
GROUP BY p.id
LIMIT 0, 30;

product
id | price
1 | 100
2 | 150 
3 | 250

attribute_group
id | product_id | title
1 | 1 | a1
2 | 1 | a2
3 | 2 | a3
4 | 3 | a4

应该是:

1| 100

但我明白了:

2 | 200

1 个答案:

答案 0 :(得分:1)

您似乎希望所有产品或其数量/总和具有1和2的属性。以下是一种方法:

SELECT COUNT(*) as num_products, SUM(p.price) as total_price
FROM product p
WHERE p.created_at >= '2018-01-01' AND
      EXISTS (SELECT 1
              FROM attribute_group ag
              WHERE ag.product_id = p.id AND ag.id = 1
             ) AND
      EXISTS (SELECT 1
              FROM attribute_group ag
              WHERE ag.product_id = p.id AND ag.id = 2
             );