Bonjour,
Prenant l'exemple de cette requête suivante :
Je n'arrive pas à utiliser le IN pour avoir les allocations d'un ensemble de personne par date et par période, cette requête ne fonctionne pas puisque le retour des subquery est un ensemble de ligne :
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 SELECT personne.IDPERSONNE, (SELECT SUM(enfantDate.alloc) FROM PERSONNE personneDate LEFT JOIN ENFANT enfantDate ON personneDate.IDPERSONNE=enfantDate.PERSONNE_ID AND enfantDate.DATEDEBUT = '2000-05-01' WHERE personneDate.IDPERSONNE = 4) as sumAllocationParDate, (SELECT SUM(enfantParPeriode.alloc) FROM PERSONNE personneParPeriode LEFT JOIN ENFANT enfantParPeriode ON personneParPeriode.IDPERSONNE=enfantParPeriode.PERSONNE_ID AND enfantParPeriode.DATEFIN > '2000-01-01' AND enfantParPeriode.DATEFIN < '2000-06-01' WHERE personneParPeriode.IDPERSONNE = 4) as sumAllocationParPeriode FROM PERSONNE personne WHERE personne.IDPERSONNE = 4;
Que dois je modifier dans ma requête pour avoir le résultat souhaité ?
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 SELECT personne.IDPERSONNE, (SELECT SUM(enfantDate.alloc) FROM PERSONNE personneDate LEFT JOIN ENFANT enfantDate ON personneDate.IDPERSONNE=enfantDate.PERSONNE_ID AND enfantDate.DATEDEBUT = '2000-05-01' WHERE personneDate.IDPERSONNE IN (1,2,3,4)) as sumAllocationParDate, (SELECT SUM(enfantParPeriode.alloc) FROM PERSONNE personneParPeriode LEFT JOIN ENFANT enfantParPeriode ON personneParPeriode.IDPERSONNE=enfantParPeriode.PERSONNE_ID AND enfantParPeriode.DATEFIN > '2000-01-01' AND enfantParPeriode.DATEFIN < '2000-06-01' WHERE personneParPeriode.IDPERSONNE IN (1,2,3,4)) as sumAllocationParPeriode FROM PERSONNE personne WHERE personne.IDPERSONNE IN (1,2,3,4);
Merci beaucoup pour votre aide.
Partager