我有这样的表:
product_id, product_primary_image,product_name
image_id,product_id,image_url
product_id product_primary_image product_name image_url1 image_url2 image_url3
这是我到目前为止尝试得到的结果,但是
SELECT `product`.`product_id`,`product`.`product_name`,`product`.`product_primary_image`,`product_image`.`image_url` FROM `product_image` LEFT JOIN `product` ON `product`.`product_id` = `product_image`.`product_id`;
但是它给出了
product_id product_name product_primary_image image_url
99 301R Maroon1.jpg Maroon3.jpg
99 301R Maroon1.jpg Maroon2.jpg
99 301R Maroon1.jpg Maroon.jpg
我希望结果为
product_id product_name product_primary_image image_url1 image_url2 image_url3
99 301R Maroon1.jpg Maroon3.jpg Maroon2.jpg Maroon.jpg
答案 0 :(得分:1)
获得所需内容的最简单方法是将图像放入带有分隔符的单个列中:
SELECT p.`product_id`, p.`product_name`, p.`product_primary_image`,
gruop_concat(pi.`image_url`) as urls
FROM `product_image` pi LEFT JOIN
`product` p
ON p.`product_id` = pi.`product_id`;
编辑:
如果您愿意,可以使用substring_index()
:
SELECT p.`product_id`, p.`product_name`, p.`product_primary_image`,
min(pi.image_url) as url1,
substring_index(substring_index(gruop_concat(pi.`image_url`), ',', 2), ',', -1) as url2,
max(pi.image_Url) as url3
FROM `product_image` pi LEFT JOIN
`product` p
ON p.`product_id` = pi.`product_id`;