我想使用JOIN进行查询,并且只显示带有图片的产品名称

时间:2019-03-28 10:28:12

标签: php sql database

我正在练习查询,并且对JOIN有疑问。

我有这两个表:

**PRODUCTS**:

id

name

description

**PRODUCT_IMAGES**

id

product_id

image_link

我想使用JOIN合并这两个表,在这里我只想查看产品名称以及与id链接的特定图像。

我通过以下查询尝试做到这一点:

SELECT * FROM `product_images`
LEFT JOIN `products`
ON `product_images`.`products.id` = `products`.`id`;

现在的问题是我获得了所有信息,但是我只想查看名称和图像。

6 个答案:

答案 0 :(得分:5)

product_imagesid出错,应该像“ product_imagesproduct_id”,我已解决此问题,请使用此查询。

SELECT products.name, product_images.image_link FROM `product_images`
INNER JOIN `products`
ON `product_images`.`product_id` = `products`.`id`;

答案 1 :(得分:3)

将*更改为名称,图像链接:

SELECT name, image_link FROM `product_images`
LEFT JOIN `products`
ON `product_images`.`products.id` = `products`.`id`;

答案 2 :(得分:2)

SELECT products.id,products.name FROM `product_images`
LEFT JOIN `products`
ON `product_images`.`products.id` = `products`.`id`;

您可以用逗号分隔*,而不用column names

您可以根据需要选择LEFT JOININNER JOIN

答案 3 :(得分:2)

在select语句中选择所需的列。最好将表和列一起命名。否则,如果两个表中都存在具有相同名称的列,则会引发错误。

SELECT `products`.`name`,`product_images`.`image_link` 
FROM `product_images`
LEFT JOIN `products`
ON `product_images`.`products.id` = `products`.`id`;

答案 4 :(得分:1)

简单使用内部联接

SELECT
    p.name,
    i.image_link 
FROM
    products p 
    JOIN
        product_images i USING(product_id)

答案 5 :(得分:0)

如果确定,两个表中都有数据,请使用以下内容 从product_images PI中选择P.name,PI.image_link 内部JOIN产品P 开启P.id = PI.product_id


如果您确定产品表中有数据,但可能不在product_image中,请在下面使用 从产品P中选择P.name,PI.image_link 左JOIN product_images PI 开启P.id = PI.product_id