Bonjour.

On m'a demandé de créer une table monitoring qui va afficher des informations provenant d'autres tables.
À un moment, je dois utiliser le contenu d'une des tables en tant que nom de colonne, donc je devrais utiliser un PIVOT.

Ci-dessous un exemple plus parlant et ce à quoi je voudrais arriver.

Table produits
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
+------------+--------+--------+
| id_produit | nom_fr | nom_en |
+------------+--------+--------+
|          0 | pomme  | apple  |
+------------+--------+--------+
|          1 | pêche  | peach  |
+------------+--------+--------+
|          2 | poire  | pear   |
+------------+--------+--------+
|          3 | abricot| apricot|
+------------+--------+--------+
Table achats
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
+------------+-----------+------------+----------+
| date       | id_client | id_produit | quantité |
+------------+-----------+------------+----------+
| 2000-01-01 |        A0 |          0 |        3 |
+------------+-----------+------------+----------+
| 2000-01-02 |        A0 |          0 |        2 |
+------------+-----------+------------+----------+
| 2000-01-03 |        A0 |          0 |        5 |
+------------+-----------+------------+----------+
| 2000-01-03 |        A0 |          2 |        2 |
+------------+-----------+------------+----------+
| 2000-01-03 |        A0 |          0 |        1 |
+------------+-----------+------------+----------+
| 2000-01-04 |        A0 |          0 |        2 |
+------------+-----------+------------+----------+
| 2000-01-04 |        A0 |          2 |        3 |
+------------+-----------+------------+----------+
Résultat voulu
Fourni dans la requête : id_client et langue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
+------------+---------+---------+---------+---------+
| date       | pomme   | pêche   | poire   | abricot |
+------------+---------+---------+---------+---------+
| 2000-01-01 |       3 |       0 |       0 |       0 |
+------------+---------+---------+---------+---------+
| 2000-01-02 |       2 |       0 |       0 |       0 |
+------------+---------+---------+---------+---------+
| 2000-01-03 |       6 |       0 |       2 |       0 |
+------------+---------+---------+---------+---------+
| 2000-01-04 |       2 |       0 |       3 |       0 |
+------------+---------+---------+---------+---------+
Je dois bien avouer que j'ai jamais fait de pivot, je suis un peu perdu.
Le peu d'exemples que j'ai trouvé en ligne impose de mettre le nom des colonnes "en dur" dans la requête.
Or, ceux-ci peuvent varier, en nombre ou selon la langue.
Est-ce qu'il est possible de mettre dynamiquement les noms des produits et de faire le pivot, le tout en une seule requête ?
Merci (et bonnes fêtes ).

Cordialement.