2013-05-27 27 views
-1

我需要編寫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' 表顯示每個項目的第一個圖像。

+4

雅偉大,你有沒有嘗試過什麼? –

+0

你到目前爲止嘗試過什麼?請閱讀這篇文章:http://whathaveyoutried.com – Barranka

+0

不,想不到如何讓這個開始,對不起。 – Mike

回答

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 
+0

內聯子查詢中不能有2列:'SELECT GI.id,GI.filename' –

0

分割問題:

  1. Retreive第一圖像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 

我將離開你的第二個步驟(提示:以上加入與你的服裝表從查詢數據)

0

如果「第一形象」是一個與order = 1(SQL Fiddle)

SELECT * from garments g JOIN garment_images gi 
    ON g.garment_id = gi.garment_id 
    WHERE gi.order = 1