2

我想从我的查询中得到以下结果:

id_product_attribute | id_product | reference | name         | total
12                   | 1          | 234235    | product_name | 2
14                   | 2          | 235435    | product_name | 7
16                   | 3          | 235325    | product_name | 4

ETC

但是当我使用这个查询时:

select pa.id_product_attribute, p.id_product, pa.reference, cl.name, sum(od.product_quantity) as total
from ps_product_attribute pa
left join ps_order_detail od on od.product_attribute_id = pa.id_product_attribute
left join ps_product p on pa.id_product = p.id_product
left join ps_category_product cp on cp.id_product = p.id_product
left join ps_category_lang cl on cp.id_category = cl.id_category
where cp.id_category = 141 and cl.id_lang = 6;

它只给我这个结果:

id_product_attribute | id_product | reference | name         | total
12                   | 1          | 234235    | product_name | 13

所以在“总计”列中,它向我显示了所有的总数,而不是每行单独显示。

谁能告诉我我在查询中做错了什么?

4

2 回答 2

0

聚合函数应与GROUP BYCLAUSE一起使用

于 2013-07-18T08:11:23.240 回答
0

您的源数据会有所帮助,但至少您GROUP BY最后忘记了。使用当前查询,您应该添加;

GROUP BY pa.id_product_attribute, p.id_product, pa.reference, cl.name

使用 MySQL,您可以选择GROUP BY更少的列并在其他列中随机选择值,但如果可能,您应该在GROUP BY所有列上没有聚合(如SUM本例中)。

于 2013-07-18T08:11:32.007 回答