2012-05-17 42 views
0

我有如下表:將幾個詞加入一張表中?

 
GENRES 
gID | gNAME 
1 | Fiction 
2 | Non-Fiction 
3 | Comedy 
4 | Horror 

而這個表

 
PRODUCTS 
pID | pNAME 
1 | 4 hour work week 
2 | screw it let's do it 

然後是分配表:

 
ASSIGNTABLE 
aID | pID | gID 
1 | 1 | 1 
2 | 1 | 2 
3 | 2 | 2 
4 | 2 | 3 
5 | 2 | 4 

我需要一個查詢,將返回以下內容:

 
pID | pNAME     | pGENRE 
1 | 4 hour work week  | Fiction 
2 | screw it let's do it | Non-Fiction 

換句話說,我只需要爲每種產品獲得一種流派。我該怎麼做呢?

+0

對於有多個流派的產品,您要選擇哪一個? – eggyal

+0

第一個,請... – coderama

+0

MySQL表是無序的。你如何定義「第一個」? – eggyal

回答

2

正如我在上面的評論中所述,MySQL表是無序的。如果「第一個」你的意思是你想用最小的gID流派,您可以通過pID使用子查詢來組ASSIGNTABLE並確定所需的類型:

SELECT PRODUCTS.*, GENRES.gNAME 
FROM  PRODUCTS 
    JOIN (SELECT pID, MIN(gID) gID FROM ASSIGNTABLE GROUP BY pID) t USING (pID) 
    JOIN GENRES USING (gID) 

見它sqlfiddle