Count sur plusieurs tables
Bonsoir à tous,
voilà j'ai 2 tables qui ont toutes les 2 les mêmes champs
Je souhaite effectuer l'affichage du nombre d'incidents et le nom de l'équipement où certaines conditions sont vérifiées sur mes deux tables
voilà mon code SQL :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
SELECT COUNT( * ) Nb, Equipement
FROM (
SELECT COUNT(*) NbInc, Equipement
FROM `incidents`
WHERE Traite = 'OUI'
AND Mise_hors_trafic = 'OUI'
AND (`Date_debut` BETWEEN '2008-01-01' AND '2009-12-31')
UNION
SELECT COUNT(*) NbAutInc, Equipement
FROM `autres_incidents`
WHERE Traite = 'OUI'
AND Mise_hors_trafic = 'OUI'
AND (`Date_debut` BETWEEN '2008-01-01' AND '2009-12-31')
)TotalInc
GROUP BY Equipement |
J'ai dans ma table 4 équipements NCBAY qui correspondent aux conditions dans ma table `incidents` et 1 équuipement test dans la table `autres_incidents`
Le soucis c'est que requête me renvoie ceci :
1 NCBAY
1 test
au lieu de
4 NCBAY
1 test
Je crois avoir trouvé l'origine du problème : ma requete à cause de l'UNION ne prends pas en compte les doublons de l'équipement :?
Dites-moi si je me trompe ...
en effet car
Code:
1 2 3 4 5
| SELECT COUNT( * ) NbInc, Equipement
FROM `incidents`
WHERE Traite = 'OUI'
AND Mise_hors_trafic = 'OUI'
AND (`Date_debut` BETWEEN '2008-01-01' AND '2009-12-31') |
renvoie
4 NCBAY
et
Code:
1 2 3 4 5 6
| SELECT COUNT( * ) NbAutInc, Equipement
FROM `autres_incidents`
WHERE Traite = 'OUI'
AND Mise_hors_trafic = 'OUI'
AND (`Date_debut` BETWEEN '2008-01-01' AND '2009-12-31')
AND Equipement IS NOT NULL |
renvoie
1 test
Pouvez-vous m'aider à corriger ma requête parce que je ne sais comment la modifier pour obtenir 4 et 1 ??
Merci d'avance ;)