从多个表中获取图像

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

我正在建立一个小的网上商店,在那里我有一个称为'产品'的父表和一个称为'图像'的子表。
我遵循了最佳实践,并在字段中设置了外键约束 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 并从每个表中获取相关的图像。
即:查询 product_image 从“产品”和 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)): 

?>
qybjjes1

qybjjes11#

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

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

rsaldnfx2#

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

SELECT p.* , i.* 
FROM products p,
LEFT JOIN images i ON
  p.product_id = i.product_id

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

相关问题