-1

我需要帮助编写一个 mysql 查询。我有两张桌子,一个父母,一个孩子。

父表:garments

  `garment_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `description` text,
  PRIMARY KEY (`garment_id`)

子表:garment_images

 `id` int(11) NOT NULL AUTO_INCREMENT,
  `garment_id` int(11) NOT NULL,
  `filename` varchar(100) NOT NULL,
  `order` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)

我想查询所有服装,并显示“garment_images”表中每件商品的第一张图片。

4

3 回答 3

0

如果“第一个图像”是带有order = 1 (SQL Fiddle)的图像

SELECT * from garments g JOIN garment_images gi 
  ON g.garment_id = gi.garment_id
  WHERE gi.order = 1
于 2013-05-27T18:36:41.803 回答
0

这应该相当接近:

SELECT G.*, (
    SELECT GI.id, GI.filename from garment_images as GI
       WHERE GI.garment_id = G.garment_id
       ORDER BY GI.order DESC
       LIMIT 1)
FROM garments as G
于 2013-05-27T18:27:48.347 回答
0

拆分问题:

  1. 检索每件服装的第一个图像 ID
  2. 将数据放在一起

步骤1:

select gi.*
from 
    garment_images as gi
    inner join (
        select min(id) as minId 
        from garment_images 
        group by garment_id
    ) as a on gi.garment_id = a.minId

我将把第二步留给你(提示:将上面查询中的数据与你的服装表连接起来)

于 2013-05-27T18:30:21.443 回答