J'ai deux tables dans une base de données de rapports, une pour les commandes et une pour les articles de commande. Chaque commande peut avoir plusieurs éléments de commande, ainsi que d'une quantité pour chaque:Comment créer une requête qui renvoie des noms de colonnes dynamiques dans Postgresql?
Orders
+----------+---------+
| order_id | email |
+----------+---------+
| 1 | [email protected] |
+----------+---------+
| 2 | [email protected] |
+----------+---------+
| 3 | [email protected] |
+----------+---------+
Order Items
+---------------+----------+----------+--------------+
| order_item_id | order_id | quantity | product_name |
+---------------+----------+----------+--------------+
| 1 | 1 | 1 | Tee Shirt |
+---------------+----------+----------+--------------+
| 2 | 1 | 3 | Jeans |
+---------------+----------+----------+--------------+
| 3 | 1 | 1 | Hat |
+---------------+----------+----------+--------------+
| 4 | 2 | 2 | Tee Shirt |
+---------------+----------+----------+--------------+
| 5 | 3 | 3 | Tee Shirt |
+---------------+----------+----------+--------------+
| 6 | 3 | 1 | Jeans |
+---------------+----------+----------+--------------+
Aux fins des rapports, j'adorerait denormalise ces données dans une vue PostgreSQL séparée (ou tout simplement exécuter une requête) qui transforme les données ci-dessus dans quelque chose comme ceci:
+----------+---------+-----------+-------+-----+
| order_id | email | Tee Shirt | Jeans | Hat |
+----------+---------+-----------+-------+-----+
| 1 | [email protected] | 1 | 3 | 1 |
+----------+---------+-----------+-------+-----+
| 2 | [email protected] | 2 | 0 | 0 |
+----------+---------+-----------+-------+-----+
| 3 | [email protected] | 3 | 1 | 0 |
+----------+---------+-----------+-------+-----+
-à-dire, il est une somme de la quantité de chaque élément dans l'ordre avec le nom du produit; et les noms de produits définis en tant que titres de colonne. Dois-je utiliser quelque chose comme un tableau croisé pour ce faire, ou y a-t-il une manière intelligente d'utiliser des sous-requêtes même si je ne connais pas la liste des noms de produits distincts avant l'exécution de la requête.
Si je ne connais pas la liste des noms de produits distincts, utilisez le tableau croisé –
@Joe: Avez-vous réussi à résoudre le problème? – lakshman
Pas avec une requête particulièrement agréable, malheureusement, j'ai dû énumérer chacun de mes produits dans la requête. Toujours à la recherche d'un bon moyen d'utiliser le tableau croisé pour cela – Joe