php - 从多个表中获取图像

标签 php mysql sql join

我正在建立一个小型在线商店,其中有一个名为“产品”的父表和一个名为“图像”的子表。

我遵循了最佳实践,并使用字段 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/

相关文章:

javascript - 无法用ajax重写一些html内容

php - 如何修改 zii.widgets.CBreadcrumbs 自动生成的 html?

php - wxPHP 中是否有 AUI Pane 移动(或停靠)事件?

mysql - 正确分发带有数据库的 Java 应用程序

javascript - 如何将 php、sql 和 Javascript 连接在一起,

php - 如何仅通过查询找到数据库 IP 在网络上的位置? (mysql)

java - Hibernate 中的正则表达式查询

php - 创建一个动态的 php insert into mysql 函数?

IN 子句中的 MySQL 多列

sql - MS Access 中的 OPENROWSET 等效项