Bonjour,
Cette discussion fait suite à celle-ci qui est résolue.
J'obtiens bien une liste d'immeubles (mes "objets"), pour chaque année voulue.
2000 1000 A
2000 1001 A
2001 1000 A
2001 1001 A
2001 1002 A
2002 1000 A
2002 1001 A
2002 1002 A
2002 1003 A
2003 1000 A
2003 1002 A
2003 1003 A
2004 1000 A
2004 1002 A
2004 1004 A
Maintenant, je désire compter le nombre de logements qui leurs sont rattachés, de manière à obtenir ceci :
2000 1000 A 25
2000 1001 A 36
2001 1000 A 25
2001 1001 A 36
2001 1002 A 18
2002 1000 A 25
2002 1001 A 36
2002 1002 A 18
2002 1003 A 12
2003 1000 A 25
2003 1002 A 18
2003 1003 A 12
2004 1000 A 25
2004 1002 A 18
2004 1004 A 30
puis dans un deuxième temps, faire la somme des logements par année :
2000 61
2001 79
etc...
J'ai modifié la requête précédente comme ceci, afin de déjà obtenir le nombre de logements par immeubles :
en ajoutant les lignes 7, 12 et 13.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 SELECT cal.ANNEE_REF , EXTRACT(YEAR FROM imm.DATE_DEBUT) AS ANNEE_DEBUT , EXTRACT(YEAR FROM imm.DATE_SORTIE) AS ANNEE_FIN , imm.NUMERO_DOSSIER , imm.LETTRE_DOSSIER , imm.TYPE_STATUT_IMMEUBLE_ID_FK , COUNT(log.ID) AS NB_LOG FROM (SELECT DISTINCT EXTRACT(YEAR FROM DATE) AS ANNEE_REF FROM ipc) AS cal JOIN immeuble AS imm ON cal.ANNEE_REF >= EXTRACT(YEAR FROM imm.DATE_DEBUT) AND (cal.ANNEE_REF <= EXTRACT(YEAR FROM imm.DATE_SORTIE) OR EXTRACT(YEAR FROM imm.DATE_SORTIE) IS NULL) INNER JOIN logement AS log ON imm.ID = log.IMMEUBLE_ID_FK WHERE imm.TYPE_STATUT_IMMEUBLE_ID_FK >= 3 ORDER BY cal.ANNEE_REF ASC , imm.NUMERO_DOSSIER ASC , imm.LETTRE_DOSSIER ASC;
Je n'ai pas d'erreur, mais je n'obtiens pas le résultat souhaité, qui est :
1998 1000 A 146170
soit une seule ligne.
Pouvez-vous m'aider à corriger cette requête ?
Merci d'avance.
Partager