Php 如何返回给定产品的最高评分图像?
我有两张桌子,产品和产品图片。我还有第三个表格“product_Categoris”,但我不确定这与这个问题有多大关系) 在ProductImages表中,我有一个名为score的列作为int,还有一个product_id列。我想从product表中选择一行或多行,并获得最高评分的图像返回。到目前为止,我有:Php 如何返回给定产品的最高评分图像?,php,mysql,max,Php,Mysql,Max,我有两张桌子,产品和产品图片。我还有第三个表格“product_Categoris”,但我不确定这与这个问题有多大关系) 在ProductImages表中,我有一个名为score的列作为int,还有一个product_id列。我想从product表中选择一行或多行,并获得最高评分的图像返回。到目前为止,我有: SELECT `products`.*, `product_categorys`.`categoryName`, `product_categorys`.`categoryDescript
SELECT `products`.*, `product_categorys`.`categoryName`, `product_categorys`.`categoryDescription`, `product_images`.`thumbName`
FROM (`products`)
INNER JOIN `product_categorys` ON `products`.`categoryID` = `product_categorys`.`pid`
left JOIN `product_images` ON `products`.`pid` = `product_images`.`productID`
WHERE `products`.`vendorID` = '14'
AND `products`.`deleted` = 0
GROUP BY `products`.`pid`
ORDER BY `title` asc
LIMIT 10
它返回一个产品图像,但不是最高评分的图像,我不知道如何修改这个查询(这是由codeigniter生成的),以满足我的需要
需要更改/添加哪些内容才能让查询返回得分最高的图像?我不知道它是否有效,但请尝试一下:
SELECT p.*,
pc.categoryName, pc.categoryDescription,
pim.thumbName, pim.score
FROM products p INNER JOIN product_categorys pc
ON p.categoryID = pc.pid
LEFT JOIN product_images pim
ON p.pid = pim.productID
WHERE p.vendorID = '14'
AND p.deleted = 0
AND (pim.score =
(SELECT MAX(score) FROM product_images pim2
WHERE p.pid = pim2.productID)
OR pim.score IS NULL)
GROUP BY p.pid
ORDER BY title ASC
LIMIT 10
检查此项谢谢Marco,这导致了此错误:“where子句”中的未知列“pim.id”。谢谢,此项功能正常,但仅显示图像表中至少有一个对应行的产品行。Marco,您的操作非常成功,非常感谢您的帮助,非常感谢。