对不起,如果标题不是很清楚...
我有两张桌子products
,images
上有关products
。product_id
= images
。product_id
,
images
每个产品在桌子上都有几张与之相关的图像,
两个表都有一个列宽值,我希望按(product_order
和image_order
)排序。
我正在寻找的结果是一个列表,published
products
其中每个产品只有一个图像(和一个结果),图像应该是列中值最低的那个image_order
。
我从我在这里找到的其他答案中汇总了下面的代码并且它正在工作,唯一的问题是该列image_order
允许重复,因此在image_order
我得到每个产品的多个结果时,相同产品的图像具有相同的值。
SELECT products.*, images.image_name, images.image_order
FROM products
LEFT JOIN images ON (
images.product_id = products.product_id
AND images.image_order = (
SELECT min(image_order)
FROM images
WHERE product_id = products.product_id
)
)
WHERE products.published = 1
ORDER BY products.product_order ASC
编辑(我的表):
餐桌产品
product_id | product_name | product_order
____________|________________|_________________
1 | Fist Product | 1
2 | Second Product | 2
3 | Third Product | 3
表格图像
image_id | product_id | image_name | image_order
____________|________________|__________________|_________________
1 | 1 | Fist Image URL | 1
2 | 1 | Second Image URL | 1
3 | 2 | Third Image URL | 1
4 | 3 | Fourth Image URL | 1
我从这个查询中得到的结果:
第一个产品 + 第一个图像
第一个产品 + 第二个图像
第二个产品+第三个图像
第三产品 + 第四图像
我需要的结果:
第一个产品 + 第一个图像
第二个产品+第三个图像
第三产品 + 第四图像