et donc dans ma requete je voudrais avoir:
Je voudrais pouvoir compter le nombre d'enfant par année de naissance compris entre 1978 et 2005 et que leur date de déces soit egale a 31/12/9999 Par contre je voudrais faire un autre test dans cette requete c'est qu'en plus de ca je ramene que les enfants dont le parent(table salarie) ait une affectation(table affectation) dont le iddomainepersonnel soit egal a 2129 et que leur date affectation soit la plus grande.
j'ai fait une esquisse comme ca mais ca ne fonctionne pas.
pourriez vous m'aider
ou faire une requete pas a pas du genre
en premier je selcetionne tous les parents qui a la date d'affectation la plus grande ont un iddomainepersonnel = 2129
qu'ensuite je selectionne tous les enfant dont la date de naissance est compris entre 1978 et 2005 et que leur date de datefinenreg soit différente de 31/12/9999
et que seulement apres je selectionne tous les enfants avec ces criteres dont les parents correspondent (criteres d'avant)
merci de votre aide a tous!
esquisse de ma requete:
select to_char(E.datenaissance,'yyyy') as annee, count(E.matricule) from enfant E, Salarie S, Affectation A where S.matricule A.matricule and A.iddomainePersonnel'2129' and S.matricule = E.matricule and to_char(E.datenaissance,'yyyy') <= 2003 and to_char(E.datenaissance,'yyyy') >= 1977 and TO_CHAR(E.datefinenreg,'dd/mm/yyyy') = '31/12/9999'
and A.DateDebChangement = (SELECT MAX(A2.DateDebChangement) FROM Affectation A2 WHERE A.matricule=A2.matricule)
group by to_char(E.datenaissance,'yyyy');
DuckyLuke
Messages postés28Date d'inscriptionlundi 4 novembre 2002StatutMembreDernière intervention30 septembre 2005 22 sept. 2005 à 12:34
Essaye avec çà...
La requête passe mais comme je n'ai pas d'enregistrement de test, c'est difficle de vérifier qu'elle est vraiment correcte.
SELECT Year(E.DATENAISSANCE) AS Année, Count(E.MATRICULE) AS Nombre
FROM (SALARIE AS S INNER JOIN AFFECTATION AS A ON S.MATRICULE A.MATRICULE) INNER JOIN ENFANT AS E ON S.MATRICULE E.MATRICULE
GROUP BY Year(E.DATENAISSANCE), E.DATEFINENREG, A.IDDOMAINEPERSONNEL, A.DATEDEBCHANGEMENT
HAVING (((E.DATEFINENREG)='31/12/9999') AND ((A.IDDOMAINEPERSONNEL)='2129') AND ((Year(E.DATENAISSANCE))>1977 And (Year(E.DATENAISSANCE))<2006) AND ((A.DATEDEBCHANGEMENT)=(SELECT MAX(DATEDEBCHANGEMENT) FROM AFFECTATION)));