我有一张桌子叫Products
:
ProductID
Name
还有一张名为Product_Images
:
ImageID
ProductID
Filename
Image_Type
Image_Order
可以是两个选项(A 或 B)之一,Image_Type
并且该顺序允许以特定顺序显示每种类型的多个图像。
我使用的查询是这样的:
SELECT ProductID,
Name,
IFNULL((SELECT Filename
FROM Product_Images
WHERE ProductID = Products.ProductID
ORDER BY Image_Type DESC,
Image_Order
LIMIT 1),
'no_image.jpg') AS Image_Name
FROM Products
WHERE ProductID in (966, 967, 968)
注意:ProdictID 的列表由搜索结果指定。
Product_Images
在我为 Alt/Title 文本的表中添加了一个字段之前,这一切正常。
所以,我尝试了以下
SELECT ProductID,
Name,
pi1.Filename,
pi1.alttag
FROM Products
LEFT JOIN (SELECT *
FROM Product_Images
WHERE Product_Images.ProductID = Products.ProductID
ORDER BY Image_Type DESC,
Image_Order
LIMIT 1) AS pi1
ON Products.ProductID = pi1.ProductID
WHERE Products.ProductID in (966, 967, 968)
但它不起作用,我收到错误消息:
Unknown column 'products.productid' in 'where clause'
我已经确定此错误与 JOIN 派生表中的 Products.ProductID 相关,并且我尝试了各种方法来获得结果,但现在我只是在兜圈子。
任何人都可以提供建议吗?