2010-09-22 9 views
0

J'ai 2 tables comme celui-ciMySql Sélectionner une requête

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 

Comment puis-je obtenir le résultat comme celui-ci

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

Merci à l'avance

Répondre

3

Utilisez le GROUP_CONCAT function:

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

[Documentation FIND_IN_SET] (http://dev.mysql.com/doc/refman/5.0/fr/fonctions-structures.html#fonction_find-in-set) –

+0

Cher! C'est juste partiellement. J'ai essayé d'exécuter votre requête mais elle ne renvoie aucun jeu de résultats. Avez-vous exécuté cela? – Novice

+0

Cela fonctionne. Merci – Novice

1

Pouvez-vous ajuster le s chimi? Je pense que cela serait bénéfique si vous aviez une table de correspondance de ce que ABC est aux couleurs.

EG:

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

De cette façon, vous pouvez facilement faire JOIN.