我正在建立一个小型在线商店,其中有一个名为“产品”的父表和一个名为“图像”的子表。
我遵循了最佳实践,并使用字段 product_id
设置了外键约束,在两个表之间建立了链接。
产品
product_id (PK parent table)
product_title
product_category_id
product-price
product_quantity
product_description
long_description
product_image
图像
image_id (PK for child table)
product_id (foreign key)
product_image_two
注意:每个产品都有 2 个图像,因此我想根据其 product_id
检索产品并从每个表中获取关联的图像。
即。该查询从“products”中提取 product_image
并从“images”中提取 product_image_two
我已经浏览了这里关于 JOIN
的大量帖子,并尝试重构其他人的代码,但到目前为止没有成功。
我目前的陈述
<?php
$query = query("SELECT p.* , i.* FROM products p,images i WHERE p.product_id=i.product_id");
confirm($query);
while ($row = fetch_array($query)):
?>
最佳答案
听起来您想要的是LEFT JOIN
。使用LEFT JOIN
,您可以选择产品表中的所有内容,但只能选择图像表中的行(如果产品表中存在相应的键)。例如,您的查询可能如下所示:
SELECT p.* , i.*
FROM products p,
LEFT JOIN images i ON
p.product_id = i.product_id
这将返回产品表中的每一行,如果不存在第二个图像,则图像表中的每一列都返回 null 值。以下是其作用的简化演示:SQL Fiddle
关于php - 从多个表中获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52113729/