我有2张桌子。 product_data包含有关product和images_images的所有详细信息,其中包含每个产品的所有图像。我加入了两个表,但问题是有些产品有2个以上的图像。所以产品行重复
product_name | description | ucode | star_rating | product_image
cheese packed 321 3 1.jpg
cheese packed 321 3 1.jpg
cheese packed 321 3 3.jpg
meat canned F98 1 meat1.jpg
milk canned G43 5 milk1.jpg
milk canned G43 5 milk2.jpg
milk canned G43 5 milk3.jpg
milk canned G43 5 milk4.jpg
当我有一个foreach循环
foreach ($products as $product):
//display the product details once and all the images for that product
endforeach;
输出就像,
product 1 1.jpg
2.jpg
3.jpg
product 2 meat1.jpg
product 3 milk1.jpg
milk2.jpg
milk3.jpg
milk4.jpg
我想列出所有产品以及图片。如何仅显示产品详细信息一次以及该产品的所有图像并转移到下一个产品?产品最多有6张图片
SQL查询 - 已加入3个表
SELECT *
FROM product_data p
LEFT JOIN product_img_map im ON im.product_id = p.product_id
LEFT JOIN product_images i ON i.photo_id = im.photo_id
答案 0 :(得分:1)
你可以把它全部放在一个数组中:
foreach ($products as $product) {
....
$product_array[$product_name]['images'][] = $product_image;
....
}
然后,您可以通过循环创建的产品数组来控制输出。
答案 1 :(得分:0)
您可以使用GROUP_CONCAT
:
SELECT `product_data`.*,
GROUP_CONCAT(`product_data`.`product_image`) as Pictures
FROM `product_data`
GROUP BY `product_data`.`product_name`
您将获得一个新行Pictures
,其中包含以逗号分隔的所有图片。