【问题标题】:How to edit my query show only one image per product?如何编辑我的查询每个产品只显示一张图片?
【发布时间】:2015-03-16 21:31:29
【问题描述】:

我有两个表,products 和 product_images。 Product_images 包含每个产品的图像条目。每个产品都有很多图片。

我正在使用以下 SQL 查询,但我只想为每个产品显示一张图片。现在,每个产品的条目数量与图片一样多。

为了这个目的,我将展示很多产品,比如一个类别的所有产品,而不是单个产品。

select products.product_id, product_images.image,
       products.name, products.description
from product_images
left join products on products.product_id = product_images.product_id 
where products.category_child= 1

如何只显示每个产品的一张图片(第一张)?

【问题讨论】:

  • @Rizier123 我不会显示单个产品,而是显示一个类别的所有产品
  • @Rizier123 也不是我反对你

标签: php mysql


【解决方案1】:

如果您可以使用按字典顺序最小的图像名称,则此查询将起作用:

select products.product_id,  MIN(product_images.image), products.name, products.description 
from product_images 
     left join 
     products 
     on products.product_id = product_images.product_id 
where products.category_child= 1 
group by products.product_id

另外,你可能想在这里使用INNER JOIN 而不是LEFT JOIN,因为LEFT JOIN 也会返回不属于任何产品的图片,如果你出于某种原因有这样的图片。

【讨论】:

  • 图片有标题怎么办?
  • 然后它变得有点棘手。 MySQL 没有一种简单的方法来选择与具有 MIN 聚合返回值的行相对应的列。如果性能很关键,您将需要使用子查询来检索该信息,或者进行更复杂的连接。子选择的想法类似于SELECT products.product_id, MIN(product_images.image) image_url, (SELECT v.title FROM product_imanges v WHERE v.image = image_url) image_title, products.name, ...
猜你喜欢
  • 2021-04-11
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
相关资源
最近更新 更多