首页 > 解决方案 > sql中每个产品多张图片

问题描述

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 中想要的是在 ap 标签中回显尺寸名称和价格,这没问题,但我也想在 img 标签中回显图片名称

标签: mysqlsql

解决方案


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

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在必要时允许自我...)。


推荐阅读