我想创建一个查询,该查询从产品表中获取产品,从类型表中获取产品的类型和类别以及产品上的歌曲计数。
但是以某种方式此查询将引发错误。它是在我添加count(n.name)
时开始的
SELECT p.name, p.publisher, p.description, p.price, p.picture
, p.releasedate, t.type, t.category, count(n.name) AS songs
FROM Products p
INNER JOIN ProductType t ON (p.type_id = t.id)
INNER JOIN Songs n ON (p.id = n.product_id)
我得到的错误是
最佳答案
仅对Songs
行进行分组,然后加入聚合的数据,而不是正确的Songs
表:
SELECT p.name, p.publisher, p.description, p.price, p.picture
, p.releasedate, t.type, t.category, n.songs
FROM Products p
INNER JOIN ProductType t ON (p.type_id = t.id)
INNER JOIN (
SELECT
product_id,
COUNT(n.name) AS songs
FROM Songs
GROUP BY product_id
) n ON (p.id = n.product_id)
这样,您将避免将几乎所有的输出列添加到
GROUP BY
子句中,而这必须在问题中发布的查询中执行。关于sql - 无效,因为它未包含在聚合函数或group by子句中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10419057/