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

Langage SQL Discussion :

SQL: Conception d'une requête


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut SQL: Conception d'une requête
    Bonjour,

    J'ai 2 tables comme suit:
    Une table personne (id_pers nom prenom adresse active date_insert)
    une table coupon (id_pers date coupon anul_coupon)

    Je vous explique mon problème.
    Une personne rempli un coupon avec divers renseignements.
    Si elle le fait, je mets la colonne coupon à oui , par contre un coupon peut être annulé et je mets alors la colonne anul_coupon à non.
    Une personne ne peut remplir que un coupon par an.

    Je dois créer un trigger qui mets à jour une colonne dans une autre table.
    Elle est mise à jour si:
    cela fait plus d'un an que la personne n'a pas rempli de coupon ou si elle n'en a jamais rempli.
    Donc je dois vérifier cela.
    je fais donc une requête qui me ramène la différence entre la date où la personne a rempli le coupon et la date_insert. Si elle est > 1 an j'accepte le coupon sinon je ne l'accepte pas.
    Jusque là tout va bien et j'espère que vous comprenez

    Mais il faut que je prenne en compte l'annulation d'un coupon.
    Je vais vous expliquer avec un exemple.
    Une personne envoi un coupon le 10/01/2006 mais il est annullé le 12/01/2006.
    Cette personne renvoit un coupon le 20/01/2006. Avec la requête que j'ai créer, le coupon ne sera pas accepter alors qu'il le devrait puisque son dernier coupon a été annulé.

    Je ne voit pas trop comment faire.

    Si quelqu'un a une idée?
    j'espère m'être expliquée assez clairement.
    Je suis sous Oracle.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    Je suis pas sur de comprendre mais est ce que rajouter une clause WHERE ne suffirait pas ?

    WHERE anul_coupon="non"

    pour sélectionnez seulement les coupons qui n'on pas été annulés...

    De plus tu n'est pas obliger d'avoir une colonne coupon et anul_coupon...

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Points : 166
    Points
    166
    Par défaut
    En fait ce que j'aurais besoin de savoir c'est si le dernier questionnaire valide date de plus d'un an ou non.
    Mais comme un coupon peut être annulé, cela fausse mon résultat et je ne sais pas comment le prendre en compte dans ma requête.

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Voici une proposition :

    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
     
    --récupération de la personne si coupon pas valide
    SELECT *
    FROM personne
    LEFT OUTER JOIN coupon ON personne.id_pers=coupon.id_pers --jointure externe
    WHERE   nom='robert'
     
    -- récupération du dernier coupon
    AND     coupon.date = (SELECT max(date) FROM coupon cpn WHERE cpn.id_pers=personne.id_pers)
     
     
    --récupération coupon si plus d'1 an ou moins d'1 an et coupon annulé
    AND     ( 
                (coupon.date - personne.date_insert ) > 365 )
                OR  
                (coupon.date - personne.date_insert ) < 365  AND anul_coupon = "oui")
            )

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

Discussions similaires

  1. Conception d'une requête SQL
    Par robin.pariset dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/10/2007, 10h10
  2. [SQL] Formulation d'une requête UPDATE
    Par yopuke dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/05/2006, 12h29
  3. [SQL ] performances dans une requête
    Par claralavraie dans le forum Oracle
    Réponses: 12
    Dernier message: 05/01/2006, 17h54
  4. [Oracle 9.1] Plantage SQL+ à cause d'une requête
    Par ftrifiro dans le forum Oracle
    Réponses: 8
    Dernier message: 04/10/2005, 15h08
  5. Récupérer le code SQL à partir d'une requête
    Par Edith_T dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/11/2004, 14h10

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