plusieurs count avec jointure

plusieurs count avec jointure - SQL/NoSQL - Programmation

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
Reply

Marsh Posté le 30-09-2008 à 22:09:22   

Reply

Marsh Posté le 01-10-2008 à 02:57:19    

je me réponds à moi-meme
il faut utilisé la clause GROUP BY ... WITH ROLLUP
pour les curieux: http://dev.mysql.com/doc/refman/5. [...] fiers.html


---------------
VNR CAMENBERT
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed