-
Count pour deux tables
Bonjour à tous,
Je veux créer un graphique qui contient les données d'une table faisant référence à une autre table. Exemple: la 1ère table contient l'historique des équipement et leurs types. La 2ème table contient la liste des équipements et leurs types. Alors, comment faire une requête SQL qui compte le nombre d'enregistrement de la 1ère table en mettant "0" (zéro) pour les équipements qui se trouvent dans la 2ème table et non dans la 1ère table.
J'espère que j'étais clair dans ma question.
Merci d'avance pour votre aide.
-
Bonjour,
il faudrait que tu donnes ton schéma de base (enfin uniquement ce qui est pertinent pour ta question), afin d'être sûr qu'on ait bien compris et qu'on puisse te répondre précisement.
-
Voila un exemple:
Table1 : Equipement
Code type_equipement
01 Energie
02 Mécanique
03 Electrique
Table2 : mvt_equipement
Code type_equipement date_réparation
01 Energie 01/10/2005
02 Energie 02/10/2005
03 Electrique 03/10/2005
Le résultat que je veux doit etre de type:
Type_quipement Nbr_réparation
Energie 2
Mecanique 0
Electrique 1
Vous remarquez le "0" (zéro) dans mécanique: c'est ce que je veux avoir.
Merci infiniment pout votre collaboration.
-
Je passerais par une requête imbriquée qui me donnerait le nombre par type d'équipement, jointe par une jointure externe gauche à la table des équipements pour avoir tous les types ; le CASE est la touche finale qui permet d'afficher un total de 0 pour les équipements qui ne figurent pas dans l'historique.
Code:
SELECT e.type_equipement, CASE WHEN nb_code IS NULL THEN 0 ELSE nb_code END FROM equipement e LEFT OUTER JOIN (SELECT type_equipement, COUNT(*) as nb_code FROM mvt_equipement GROUP BY type_equipement) m USING (type_equipement)
Attention, la requête n'est pas testée (il y a peut-être quelques petits problèmes de syntaxe), mais c'est pour donner l'esprit...