2010-08-27 4 views
0

Si j'ai une table de données commelignes mysql à colonnes, type de texte

Option_id|Component_id|Option_parent|Option_name|Option_value 
1   1   0    id   
2   1   1    option1  Some value 
3   1   1    option2  Other 
4   1   0    id   Value 
5   1   4    option1  More 
6   1   4    option2  More&More 

Est-il possible de retourner les lignes avec le option_name sous forme de colonnes lors de la fourniture du « option_name » pour sélectionner et ID_composant. L'option_name avec "id" sera le parent en utilisant son "option_id".

So Select option1, option2 where Component_id = 1 returns 

Option1 |Option2 
Some Value Other 
More  More&More 

J'essaie essentiellement de voir si je peux avoir une table générique qui peut être utilisé par des composants pour stocker des quantités variables de données. Je sais que je peux utiliser des jointures, mais je me demandais s'il pourrait y avoir une meilleure façon, car un composant pourrait avoir 10 options.

Répondre

1

Utilisation:

SELECT MAX(CASE WHEN t.option_name = 'option1' THEN t.option_value END) AS option1, 
     MAX(CASE WHEN t.option_name = 'option2' THEN t.option_value END) AS option2 
    FROM TABLE t 
    WHERE t.option_name IN ('option1', 'option2') 
GROUP BY t.component_id, t.option_parent 
+0

Merci, ce que je cherchais :) – Alex