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 :

requête SQL - éclaircissement


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Par défaut requête SQL - éclaircissement
    Bonjour,
    Débutant l'apprentissage du SQL dans le cadre de mon travail,
    j'ai besoin d'aide pour comprendre et faire une requête qui me donne du fil a retordre.

    Imaginons une table "évenements" qui contient les champs suivants : "IDCLIENT"/"SENS" (entrant ou sortant)/"OUTIL"(appel, mail, courrier)/"IDDATE"(format JJ/MM/AAAA HH:MM:SS).
    Je cherche à connaitre en une seule requête :
    -la liste complète des clients à qui nous avons adressé un mail (sens sortant, mail, en août).
    -et dans cette même liste, connaitre ceux qui ont rappelé le jour même ou le lendemain (sens entrant, appel, IDCLIENT similaire, et Délai rappel (J ou J+1) et donc potentiellement avoir des champs vides si il n'y a pas eu d'appel.

    ma problématique est la suivante : quelle méthode utilisée svp? left join? table intermédiaire (un collègue me l'a expliqué mais je n'ai pas compris et assimilé le principe )? mettre toutes les conditions dans le where en nommant 2fois la table dans le from (from evenement mail, evenement appel)?

    plus j'essaie seul, et plus je trouve des résultats différents... et moins je suis sûr de moi et de mes résultats .
    merci d'avance pour les conseils que vous pourrez me donner.
    bonne soirée.

  2. #2
    Membre très actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 261
    Par défaut
    Bonjour,

    J'espère ne pas vous induire en erreur mais, à mon sens, il peut être bien scruter deux fois ta même table en lui donnant un alias différent.
    La première scrutation récupérerait la liste des mail sortant et la deuxième la liste des appels entrant avec après une vérification sur la date.

    Une requête comme celle-ci pourrait convenir à votre besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select IDCLIENT 
    from MaTable t1 join MaTable t2 ON T1.IDCLIENT = T2.IDCLIENT
    where t1.SENS = "Sortant" and t1.OUTIL = "MAIL" 
    and t2.sens = "Entrant" and t2.outil = "Appel"
    and (t1.IDDATE = t2.IDDATE OR t1.IDDATE + 1 = t2.IDDATE);
    Bisous

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 137
    Par défaut
    La requête de JeanYvette te retournera la liste des clients qui ont rappelé le jour ou le lendemain de l'envoi du mail
    Si tu désires avoir la liste de tous les clients auxquels un mail a été envoyé avec mention de ceux qui ont rappelé le jour ou le lendemain, il faut une jointure externe :
    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
    select  mel.IDCLIENT
        ,   mel.IDDATE  as  Envoi_Mail
        ,   apl.IDDATA  as  Appel_Client
    from    EVENEMENTS  mel
        left join 
            EVENEMENTS  apl
            on  apl.IDCLIENT = mel.IDCLIENT
            and apl.IDDATE  in (mel.IDDATE, mel.IDDATE + 1)
            and apl.SENS    = 'Entrant'
            and apl.OUTIL   = 'Appel'
    where   mel.SENS    = 'Sortant'
        and mel.OUTIL   = 'MAIL'
        and mel.ID_DATE >= TO_DATE('2018-08-01', 'yyyy-mm-dd')
        and mel.ID_DATE < TO_DATE('2018-09-01', 'yyyy-mm-dd')
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Par défaut
    Bonjour et merci pour vos réponses,
    je teste ça dès que possible et reviens vers vous.
    bon weekend à toutes et tous!

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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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