SQL中每个产品的多个图片

时间:2019-03-19 01:25:50

标签: php sql mysqli mysql-workbench

product
-----------
product_id
product_name
product_description
price
size

productpictures
--------------
product_id
picture_id

pictures
---------
picture_id
picture_name

每个产品都有2张图片,但是我一次只需要名称,尺寸,描述和价格,但是我都需要这两张图片。

我用过

SELECT 
    product.product_description, 
    product.product_name, 
    product.price, 
    product.size,
    pictures.picture_name
FROM product
LEFT OUTER JOIN productpictures
    ON product.product_id = productpictures.product_id
LEFT OUTER JOIN bilde
    ON productpictures.picture_id = pictures.picture_id
WHERE product.product_id = 1

但是我得到两行,其名称,价格,大小和描述都加倍,但是图片名称不同,但是如何将两个图片名称插入我的php文件中,以便显示有关产品和两个图片的信息?

我尝试打印行图片名称,但这只是给我一个名字,而不是第二个名字。

size     product_name      price   picture_name
50x70cm Sandvasket silke    399   Elfenben.PNG
50x70cm Sandvasket silke    399   SVElfenben.JPG

这是我当前使用sql语句编写的结果。基本上,我想在php中回显p标签中的尺寸名称和价格,那没问题,但我也想在img标签中回显picture_names

1 个答案:

答案 0 :(得分:0)

每个产品只有两张图片,一种解决方案是使用聚合

SELECT 
    pr.product_description, 
    pr.product_name, 
    pr.price, 
    pr.size, 
    MAX(pi.picture_name) picture_name1, 
    MIN(pi.picture_name) picture_name2
FROM product pr
LEFT JOIN  productpictures pp ON pr.product_id = pp.product_id
LEFT JOIN pictures pi ON pp.picture_id = pi.picture_id
WHERE pr.product_id = 1
GROUP BY
    pr.product_id,
    pr.product_description, 
    pr.product_name, 
    pr.price, 
    pr.size

PS:我向您的查询中添加了表别名,它们使查询更易于阅读和维护(并在必要时允许自JOIN进行自我编排...)。