从多个表中获取图像

xmjla07d  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(247)

我正在建立一个小的网上商店,在那里我有一个称为'产品'的父表和一个称为'图像'的子表。
我遵循了最佳实践,并在字段中设置了外键约束 product_id 在两个表之间建立链接。
产品

  1. product_id (PK parent table)
  2. product_title
  3. product_category_id
  4. product-price
  5. product_quantity
  6. product_description
  7. long_description
  8. product_image

图像

  1. image_id (PK for child table)
  2. product_id (foreign key)
  3. product_image_two

注:每个产品将有2个图像,因此我想检索一个产品的基础上它的 product_id 并从每个表中获取相关的图像。
即:查询 product_image 从“产品”和 product_image_two 从“图像”
我在这附近的许多柱子上搜寻过 JOIN 并试图重构其他人的代码,但至今没有成功。
我现在的陈述

  1. <?php
  2. $query = query("SELECT p.* , i.* FROM products p,images i WHERE p.product_id=i.product_id");
  3. confirm($query);
  4. while ($row = fetch_array($query)):
  5. ?>
qybjjes1

qybjjes11#

尝试内部连接:根据你的解释,它应该工作

  1. SELECT p.product_id,p.product_image, i.product_image_two FROM products p
  2. inner join images i on
  3. p.product_id=i.product_id
rsaldnfx

rsaldnfx2#

听起来你想要的是 LEFT JOIN . 使用 LEFT JOIN ,则可以选择产品表中的所有内容,但如果相应的键在产品表中,则只能选择图像表中的行。例如,您的查询可以如下所示:

  1. SELECT p.* , i.*
  2. FROM products p,
  3. LEFT JOIN images i ON
  4. p.product_id = i.product_id

这将返回products表中的每一行,如果不存在第二个映像,那么images表中的每一列都将返回null值。下面是一个简化的演示:sqlfiddle

相关问题