J'ai une table qui ressemble à ceci:Comment puis-je utiliser les valeurs colonnes comme noms de colonnes dans MySQL
|date |category_id|val
|2010-08-09|1 |2
|2010-08-09|2 |45
|2010-08-10|3 |1500
|2010-08-10|2 |4
Je voudrais sélectionner ce tableau, que chaque identifiant de catégorie est une colonne de sorte que le résultat final ressemble à ceci:
|date |1 |2 |3
|2010-08-09|2 |45 |NULL
|2010-08-10|NULL |4 |1500
Est-ce quelque chose comme ceci possible avec une seule instruction SELECT
ou une procédure stockée, sans utiliser une table supplémentaire et sans connaître toutes les valeurs de category_id au préalable?
double possible de [requête mysql pour convertir dynamiquement les données de ligne de colonnes] (http://stackoverflow.com/questions/1599788/mysql-query-to-dynamically-convert-row-data-to-columns) –
OUI, mais il faudrait un script pour construire votre instruction SQL-Select, mais MySQL n'est pas disponible pour construire une telle simulation d'un jeu de résultats de tableau croisé – DRapp
Ce que vous décrivez est connu sous le nom de transposition, de tabulation croisée ou de pivotement. Je ne sais pas si vous pouvez le faire avec un seul SELECT, du moins pas dans MySQL sans une autre langue qui travaille pour vous. Consultez cet article pour quelques idées: http://onlamp.com/pub/a/onlamp/2003/12/04/crosstabs.html – sasfrog