从数据库显示单个图像

时间:2013-12-20 16:52:54

标签: mysql left-join

我正在将产品添加到数据库中,它有3个表productsproduct_imagescategories。现在我正在使用连接在前端和后端显示。我使用一个查询,它工作正常,直到表中的每个产品只有一个图像。但现在我有单个产品的多个图像,所以如何修改我的查询任何建议谢谢。

$sql = "SELECT p.id,p.product_title,p.product_price,p.product_quantity,p.status,
        pi.product_img,
        c.cat_name 
        FROM product p
        LEFT JOIN product_images pi ON pi.product_id = p.id
        LEFT JOIN categories c ON c.id = p.category_id
    ";

如果我使用此查询,它会显示多个时间产品,具体取决于product_images表中有多少图像。现在我希望2 different queries一个用于后手,我必须只显示一个图像,一个用于前端,我必须显示所有图像。再次感谢。

1 个答案:

答案 0 :(得分:1)

使用GROUP_CONCAT ...

显示所有图像
$sql = "SELECT p.id,p.product_title,p.product_price,p.product_quantity,p.status,
    GROUP_CONCAT(pi.product_img SEPARATOR ', '),
    c.cat_name 
    FROM product p
    LEFT JOIN product_images pi ON pi.product_id = p.id
    LEFT JOIN categories c ON c.id = p.category_id
    GROUP BY p.id,p.product_title,p.product_price,p.product_quantity,p.status, c.cat_name
";

要显示一张图片,您可以使用MINMAX

$sql = "SELECT p.id,p.product_title,p.product_price,p.product_quantity,p.status,
MIN(pi.product_img),
c.cat_name 
FROM product p
LEFT JOIN product_images pi ON pi.product_id = p.id
LEFT JOIN categories c ON c.id = p.category_id
GROUP BY p.id,p.product_title,p.product_price,p.product_quantity,p.status, c.cat_name
";