2010-09-22 4 views
0

我有2代表這樣MySql的選擇查詢

Table 1 

Id f1 f2 
1 ABC red,green 
2 DEF blue,yellow 

Table 2 
id color value 
1  red  r 
2  green  g 
3  blue  b 
4  yellow  y 

我怎樣才能得到這樣的提前

回答

3

使用GROUP_CONCAT function

f1  f2   values 
ABC red,green  r,g 
DEF blue,yellow  b,y 

感謝:

SELECT t1.f1, 
     t1.f2, 
     GROUP_CONCAT(t2.value) AS values 
    FROM TABLE_1 t1 
    JOIN TABLE_2 t2 ON FIND_IN_SET(t2.color, t1.f2) 
GROUP BY t1.f1, t1.f2 
+0

[FIND_IN_SET documentation](http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set) – 2010-09-22 03:45:56

+0

親愛的!它的部分權利。我試圖執行你的查詢,但它不返回任何結果集。你執行過這個嗎? – Novice 2010-09-22 04:13:43

+0

它的工作原理。謝謝 – Novice 2010-09-22 04:22:49

1

你可以調整s CHEMA?我認爲如果你有一個ABC對應顏色的映射表,它將會受益。

EG:

mapping_table 
------------ 
id table1_id table2_id 
1 1   1 
2 1   2 

這樣,你可以很容易地做一個JOIN。