IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

besoins d'aide creation de requete


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Par défaut besoins d'aide creation de requete
    Boujour

    je commence juste la base de donnee sur oracle avec l, outil SQL plus Worsheet.

    DSL POUR LES ACCENTS MAIS CLAVIER QWERTY

    J'aurais besoins d'aide pour le sujet suivant:

    Mon probleme :

    je doit liste les clients qui n'ont pas loue une voiture dans les 6 derniers mois.
    Avec la la date de fin contract


    voici la table:

    ma creation de table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE HIRECONTRACT
    (ContractNo CHAR(5) NOT NULL,
    StartDate DATE NOT NULL,
    EndDate DATE NOT NULL,
    TotalMileageAllowed NUMBER,
    ContractDiscount NUMBER NOT NULL,
    CustomerNo CHAR(4) NOT NULL,
    SalespersonNo CHAR(3) NOT NULL,
    CONSTRAINT CONTRACT_CONTRACTNO_PK PRIMARY KEY (ContractNo),
    CONSTRAINT CONTRACT_CUSTOMERNO_FK FOREIGN KEY (CustomerNo) REFERENCES CUSTOMER(CustomerNo),
    CONSTRAINT CONTRACT_SALESPERSONNO_FK FOREIGN KEY (SalespersonNo) REFERENCES SALESPERSON(SalespersonNo));


    Les donnees dans la table :
    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
    18
    19
    20
    INSERT INTO HIRECONTRACT
    VALUES ('HC001','13-JUN-07','22-JUL-07',20000,0,'C001','S01');
    INSERT INTO HIRECONTRACT
    VALUES ('HC002','2-AUG-07','31-AUG-08',80000,0,'C003','S02');
    INSERT INTO HIRECONTRACT
    VALUES ('HC003','30-MAY-07','10-JUL-07',24000,0,'C002','S02');
    INSERT INTO HIRECONTRACT
    VALUES ('HC004','9-MAY-07','10-JUN-07',10000,0,'C007','S03');
    INSERT INTO HIRECONTRACT
    VALUES ('HC005','9-MAY-07','10-JUN-07',30000,1,'C005','S01');
    INSERT INTO HIRECONTRACT
    VALUES ('HC006','25-APR-07','27-MAY-07',19500,0,'C001','S02');
    INSERT INTO HIRECONTRACT
    VALUES ('HC007','11-APR-07','8-MAY-07',12000,0,'C005','S03');
    INSERT INTO HIRECONTRACT
    VALUES ('HC008','28-MAR-07','29-APR-07',24000,2,'C002','S01');
    INSERT INTO HIRECONTRACT
    VALUES ('HC009','2-AUG-07','10-SEP-07',19000,0,'C004','S03');
    INSERT INTO HIRECONTRACT
    VALUES ('HC010','14-MAR-07','15-APR-07',36000,1,'C002','S02');
    Merci de votre aide d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Par défaut
    voici ce j'ai fait mais sa me sort pas forcement les bonnes date


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT CustomerNo,  EndDate, ContractNo
    FROM HireContract
    WHERE CustomerNo > ANY (SELECT CustomerNo
                                          FROM Hire Contract
                                          WHERE SYSDATE > ADD_MONTHS(EndDate ,-6));

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    1/

    Ca ressemble à un devoir ce truc..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT customerNo, MAX(endate)
    FROM HIRECONTRACT
    GROUP BY customerNo
    HAVING MAX(endate) < ADD_MONTHS(SYSDATE, - 6)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Par défaut
    A l'execution ca me dit invalid number of arguments

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     HAVING MAX (EndDate) < ADD_MONTHS (SYSDATE -6)

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    J'ai corrigé.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Par défaut
    voila ce aue je recoi en sortie


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    CUST MAX(ENDDA
    ---- ---------
    C004 10-SEP-07
    C007 10-JUN-07
    C005 10-JUN-07
    C001 22-JUL-07
    C002 10-JUL-07
    si je prend a partir de la date d'aujourd'hui, je ne pense pas que le moi de juin de l'annee derniere etait il y a 6 mois lol sinon c'est aue j,ai fait un bon dans le temp.

    J'avais le meme probleme avec ma solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SELECT CustomerNo,  EndDate, ContractNo
    FROM HireContract
    WHERE CustomerNo > ANY (SELECT CustomerNo
          FROM Hire Contract
          WHERE SYSDATE > ADD_MONTHS(EndDate ,-6));

  7. #7
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    qui n'ont pas loue une voiture dans les 6 derniers mois
    Tu as la liste des clients qui n'ont pas eu de location se terminant après le 19/09/2007 (il y a 6 mois).
    Et pour chacun de ces clients tu as leur dernière date de location. Donc forcement elle date de plus de 6 mois.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Par défaut
    re donc voila j'ai comprit maintenant

    maintenant j'essaie de rajouter dans ma table de sortie "ContractNo"

    mais a cause du


    je ne peux pas sinon sa me sort plus de resultat

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 226
    Par défaut
    j'ai reusi a faire tous le reste mais je ne sais pas comment faire pour rajouter

    voir ci-dessus

  10. #10
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Avec un KEEP DENSE_RANK

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT customerNo, MAX(endate),
     max(nocontrat) KEEP (DENSE_RANK LAST ORDER BY endate) as dernier_contrat
    FROM HIRECONTRACT
    GROUP BY customerNo
    HAVING MAX(endate) < ADD_MONTHS(SYSDATE, - 6)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide pour une requete SQL
    Par fabris dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/04/2006, 20h27
  2. besoin d'aide pour une requete
    Par Pigoulou dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/02/2006, 20h34
  3. Besoin d'aide sur une requete ds un trigger
    Par ideal dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 15/02/2006, 10h05
  4. Besoin d'aide pour une requete
    Par Okhotsk dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/11/2005, 16h30
  5. Besoin d'aide pour une requete
    Par jnc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo