Faire un COUNT sur le résultat d'une requête (dont un UNION)
Bonjour,
J'ai trouvé comment avoir les résultats entre deux bases, une qui recense mes châssis et l'autre qui recense ce qu'il y a dans les châssis, avec la requête suivante :
Code:
1 2 3 4
| SELECT ActiveOnBoards.Repartition, COUNT(DISTINCT ActiveOnBoards.EnclosureName) AS Chassis, COUNT(*) AS Nombre
FROM ActiveOnBoards, Blades
WHERE ActiveOnBoards.EnclosureName=Blades.Enclosure
GROUP BY ActiveOnBoards.Repartition |
J'ai fait la même chose avec la base de reservation
Code:
1 2 3 4
| SELECT ActiveOnBoards.Repartition, COUNT(DISTINCT ActiveOnBoards.EnclosureName) AS Chassis, COUNT(*) AS Nombre
FROM ActiveOnBoards, BladesReserved
WHERE ActiveOnBoards.EnclosureName=BladesReserved.Enclosure
GROUP BY ActiveOnBoards.Repartition |
Jusqu'ici tout va bien.
Ensuite, j'ai voulu avoir le résultat de mes deux requêtes dans une seule table :
Code:
1 2 3 4 5 6 7
| SELECT ActiveOnBoards.Repartition, ActiveOnBoards.EnclosureName, Blades.slot
FROM ActiveOnBoards, Blades
WHERE ActiveOnBoards.EnclosureName=Blades.Enclosure
UNION
SELECT ActiveOnBoards.Repartition, ActiveOnBoards.EnclosureName, BladesReserved.slot
FROM ActiveOnBoards, BladesReserved
WHERE ActiveOnBoards.EnclosureName=BladesReserved.Enclosure |
Ceci fonctionne très bien.
Par contre, où j'ai plus de mal, c'est que je voudrais pouvoir compter le nombre d'enclosurename et de slot pour chaque répartition.
J'ai testé ceci :
Code:
1 2 3 4 5 6 7 8 9 10
| SELECT Repartition, COUNT(DISTINCT EnclosureName) AS Chassis, COUNT(*) AS Nombre
FROM
(
SELECT ActiveOnBoards.Repartition, ActiveOnBoards.EnclosureName, Blades.slot
FROM ActiveOnBoards, Blades
WHERE ActiveOnBoards.EnclosureName=Blades.Enclosure
UNION
SELECT ActiveOnBoards.Repartition, ActiveOnBoards.EnclosureName, BladesReserved.slot
FROM ActiveOnBoards, BladesReserved
WHERE ActiveOnBoards.EnclosureName=BladesReserved.Enclosure) |
Cela ne focntionne pas avec ou sans les parenthèses.
Avez-vous une idée ? Une piste ? Ou alors m'orienter sur une autre méthode ?
Merci d'avance.