Mysql 在内部联接中选择并计数
我尝试显示每个产品的图像数量。 但这里是请求返回我所有产品的图像数量Mysql 在内部联接中选择并计数,mysql,sql,request,Mysql,Sql,Request,我尝试显示每个产品的图像数量。 但这里是请求返回我所有产品的图像数量 SELECT images, pl.*, l.iso_code, ps.price, cl.name as category_name FROM `ps_product_lang` pl INNER JOIN `ps_product` p ON (p.`id_product` = pl.`id_product`) INNER JOIN `ps_lang` l ON (pl.`id_lang` = l.`id_lang`) IN
SELECT images, pl.*, l.iso_code, ps.price, cl.name as category_name
FROM `ps_product_lang` pl
INNER JOIN `ps_product` p ON (p.`id_product` = pl.`id_product`)
INNER JOIN `ps_lang` l ON (pl.`id_lang` = l.`id_lang`)
INNER JOIN `ps_product_shop` ps ON (ps.`id_product` = p.`id_product`)
INNER JOIN `ps_category_lang` cl ON (cl.`id_category` = p.`id_category_default`) and (cl.`id_lang` = pl.`id_lang`)
INNER JOIN (SELECT id_image, id_product, COUNT(id_image) AS images
FROM `ps_image`) i ON (i.`id_product` = p.id_product)
WHERE p.active = 1 AND cl.id_shop = 1
ORDER BY pl.name ASC
LIMIT 10 OFFSET 0
在这条线上
INNER JOIN (SELECT id_image, id_product, COUNT(id_image) AS images
FROM `ps_image`) i ON (i.`id_product` = p.id_product)
编码sql
此查询的格式不正确:
(SELECT id_image, id_product, COUNT(id_image) AS images
FROM ps_image
)
这是错误的SQL,应该被拒绝并出现语法错误。幸运的是,MySQL现在使用默认设置实现了这一点
有什么问题?由于COUNT()
的原因,您有一个聚合查询。没有分组依据,因此查询只返回一行。但这些行也有“裸”列。这是一个SQL语法错误,几乎在所有数据库中都是一个错误
您确实只希望按一列进行聚合。这应该是唯一一个没有聚合功能的列select,并且它应该位于组BY
:
(SELECT id_product, COUNT(id_image) AS images
FROM ps_image
GROUP BY id_product
)
另外,您可能需要的是
COUNT(*)
,而不是COUNT(x)
。