J'ai une requête qui renvoie les systèmes et les zones de ma base de données comme suit :
SELECT Areas.ID AreaID,
Areas.Name AreaName,
Systems.*
FROM Systems
INNER JOIN Areas ON Areas.ID = Systems.AreaID
WHERE ....
Cela renvoie des données qui ressemblent à ce qui suit :
| AreaID | AreaName | SystemName | ...
| 1 | area1 | sys1 |
| 1 | area1 | sys2 |
| 1 | area1 | sys3 |
| 1 | area1 | sys4 |
| 2 | area2 | sys5 |
| 2 | area2 | sys6 |
Je voudrais renvoyer une colonne supplémentaire contenant le nombre de systèmes dans chaque zone retournée, de sorte que j'obtienne quelque chose comme ceci :
| AreaID | AreaName | SystemName | noOfSystems | ...
| 1 | area1 | sys1 | 4 |
| 1 | area1 | sys2 | 4 |
| 1 | area1 | sys3 | 4 |
| 1 | area1 | sys4 | 4 |
| 2 | area2 | sys5 | 2 |
| 2 | area2 | sys6 | 2 |
C'est-à-dire qu'il y a 4 systèmes dont l'identifiant de zone est 1 et 2 dont l'identifiant de zone est 2.
Comment cela peut-il être fait ? Je suis sûr d'avoir entendu parler d'une fonction intégrée qui fait cela, mais je n'arrive pas à trouver ce que je veux.