Help urgent requete oracle je mouline !!!!

cs_tommie Messages postés 40 Date d'inscription jeudi 18 mars 2004 Statut Membre Dernière intervention 11 octobre 2005 - 21 sept. 2005 à 08:58
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 21 sept. 2005 à 17:53
bonjour j'ai un petit soucis avec une requete sous oracle, je vous explique le probleme:
j'ai trois tables de la forme:

-- TABLE SALARIE:


CREATE TABLE SPADMIN.SALARIE(
MATRICULE INTEGER,
STATACTIVITE VARCHAR2(60),
CIVILITE VARCHAR2(60),
NOM VARCHAR2(60),
PRENOM VARCHAR2(60),
CONSTRAINT SALARIE_PK PRIMARY KEY(MATRICULE)
);

-- TABLE ENFANT


CREATE TABLE SPADMIN.ENFANT(
MATRICULE INTEGER,
NOMENFANT VARCHAR2(60) ,
PRENOMENFANT VARCHAR2(60),
NUMENFANT INTEGER,
DATENAISSANCE DATE,
DATEFINENREG DATE,
CONSTRAINT ENFANT_PK PRIMARY KEY(MATRICULE,NUMENFANT),
CONSTRAINT ENFANT_MATRICULE FOREIGN KEY(MATRICULE) REFERENCES SALARIE(MATRICULE)
);

-- TABLE AFFECTATION


CREATE TABLE SPADMIN.AFFECTATION(
MATRICULE INTEGER,
DATEDEBAFF DATE,
DATEFINAFF DATE,
DATEDEBCHANGEMENT DATE,
IDDOMAINEPERSONNEL VARCHAR2(6),
CONSTRAINT AFFECTATION_PK PRIMARY KEY(MATRICULE,DATEDEBAFF,DATEDEBCHANGEMENT),
CONSTRAINT AFFECTATION_MATRICULE FOREIGN KEY(MATRICULE) REFERENCES SALARIE(MATRICULE),
CONSTRAINT AFFECTATION_DOM FOREIGN KEY(IDDOMAINEPERSONNEL) REFERENCES DOMAINEPERSONNEL(IDDOMAINEPERSONNEL)
);



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');

1 réponse

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
21 sept. 2005 à 17:53
salut

je dirai qq chose du genre :

SELECT TO_CHAR(E.datenaissance,'yyyy') AS annee, COUNT(E.matricule)
FROM enfant E
WHERE annee BETWEEN 1978 AND 2005
AND (E.datefinenreg,'dd/mm/yyyy') = '31/12/9999'
AND E.matricule IN ( SELECT Matricule FOM affectation WHERE iddomainepersonnel = 2129)

essaie et dis moi si ca marche, sinon dis moi quelle erreur tu as !
0
Rejoignez-nous