plusieurs count avec jointure - SQL/NoSQL - Programmation
MarshPosté le 30-09-2008 à 22:09:22
je n'arrive pas à faire une requete: j'ai plusieurs tables "categorie" avec des clef étrangers vers une table.
description: (cette description est factice, il n'y a pas de correspondance sémantique, de plus les valeurs entre{}, ne sont pas des ENUMS mais des valeurs mises pour l'exemple...)
je voudrais faire ça en une seule requête. De plus, les relations entre les tables ne sont pas en 1..n, ça peut être du 0..n. Par exemple une forme n'a pas forcement une couleur (fk_id_couleur = 0)
Je n'ai pas les requêtes que je faites donc je ne peux pas vous les mettre. Mais j'utilisais des JOIN LEFT avec comme condition l'égalité des clefs étrangères et des id (ON fk_id_figure = id_figure) et à la fin je faisais GROUP BY ( liste_matiere.categorie, liste_forme.categorie, liste_couleur.categorie) j'ai oublié de préciser que le SGBD utilisé est MySQL
Message édité par cesar666 le 30-09-2008 à 22:53:25
Marsh Posté le 30-09-2008 à 22:09:22
je n'arrive pas à faire une requete: j'ai plusieurs tables "categorie" avec des clef étrangers vers une table.
description:
(cette description est factice, il n'y a pas de correspondance sémantique, de plus les valeurs entre{}, ne sont pas des ENUMS mais des valeurs mises pour l'exemple...)
#figure
-id_figure
...
#liste_matiere
-id_matiere
-fk_id_figure(references #figure)
-categorie {carton, papier, plastique}
...
#liste_forme
-id_forme
-fk_id_figure(references #figure)
-fk_id_couleur(references #couleur)
-categorie{rond, carré, triangle}
...
#liste_couleur
-id_couleur
-categorie {bleu, vert, rouge, blanc}
...
je voudrais compter le nombre total de figure, de figure en carton en papier... rond, carre... bleu vert rouge...
ça me donnerait un tableau comme ça:
figure totale: 625
~plastique: 150
-carré: 0
-rond: 50
-triangle:100
~carton:325
-carré: 200
-rond: 100
= bleu: 44
= vert: 56
-triangle:25
~papier:200
-carré: 55
-rond: 75
-triangle:70
je voudrais faire ça en une seule requête.
De plus, les relations entre les tables ne sont pas en 1..n, ça peut être du 0..n. Par exemple une forme n'a pas forcement une couleur (fk_id_couleur = 0)
Je n'ai pas les requêtes que je faites donc je ne peux pas vous les mettre.
Mais j'utilisais des JOIN LEFT avec comme condition l'égalité des clefs étrangères et des id (ON fk_id_figure = id_figure)
et à la fin je faisais GROUP BY ( liste_matiere.categorie, liste_forme.categorie, liste_couleur.categorie)
j'ai oublié de préciser que le SGBD utilisé est MySQL
Message édité par cesar666 le 30-09-2008 à 22:53:25
---------------
VNR CAMENBERT