MySQL查询父表和子表

时间:2013-05-27 18:21:45

标签: mysql

我需要帮助编写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'表中显示每件商品的第一张图片。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

解决问题:

  1. 检索每件衣服的第一张图片ID
  2. 将数据放在一起
  3. 第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
    

    我将给你留下第二步(提示:将上面查询中的数据加入你的服装表)

答案 2 :(得分:0)

如果“第一张图片”是order = 1 (SQL Fiddle)

的图片
SELECT * from garments g JOIN garment_images gi 
  ON g.garment_id = gi.garment_id
  WHERE gi.order = 1
相关问题