【发布时间】:2016-02-01 19:42:07
【问题描述】:
我正在尝试查询以返回我的特色项目表中的产品的所有相关记录。一切都适用于简单的 MYSQL 查询,但是我想获取存储在另一个表(product_image)中但带有捕获的每个产品二的拇指图像。在此“product_image”表中,并非每个产品(product_id)都会有记录,因为它仅在上传图像时填充,并且某些产品可能有多个记录(存储的图像)我只希望为每个产品 ID 返回一个记录。所以products表中的一条product记录与product_image表是0对多的关系。
我有一个基本的基本 SQL 语句而不返回图像,我可以编写一个查询,只返回在产品图像表中有记录的产品,但我需要查询来返回外部查询中的所有行然后 1 thumb_img 与图像表中的产品 id 匹配,如果没有图像,它可以返回 Null 值。
这可能吗?下面是我的最新尝试,但这只是返回第一个 product_ID 的匹配拇指,并将其复制到其他 3 个(在这种情况下是由于末尾的限制)记录。我需要每条记录的匹配拇指,而不是在其余记录之间重复的第一条记录的匹配拇指。如果该产品 ID 没有记录,则返回 null。
SELECT * FROM `products`, `featured_products`, `shop`, (SELECT thumbSrc
FROM product_image
WHERE products.productId = product_image.productID
ORDER BY product_image.position ASC
LIMIT 1) image
where shop.shopId = products.shopId AND featured_products.productId = products.productId AND visible = '1' LIMIT 4
提前感谢您的任何帮助/反馈。是否可以这样做,因为我想让我的数据库尽可能规范化,而不是在 products 表中存储一个 thumb 字段。
【问题讨论】:
-
了解外连接。并将 product_Image 加入产品表而不是您的方法。我最喜欢解释这些连接如何工作的网站之一是blog.codinghorror.com/a-visual-explanation-of-sql-joins。
-
谢谢,我会读入外连接,非常感谢
标签: php mysql sql database subquery