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

MySQL Discussion :

Requête SQL en jointure avec traitement de doublons [MySQL-5.1]


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Requête SQL en jointure avec traitement de doublons
    Bonjour à tous,

    Désolé pour le titre pas très clair mais mon problème est assez complexe.

    Ce que je veux faire :

    Dans ma BDD j'ai 3 tables, prospects, detail_prospects et relance_prospects. Sur une page d'administration je liste les infos essentielles (tableau php) concernant les prospects grace à ma requête de jointure (voir en dessous). Je veux rajouter un champs "date de dernière relance" dans mon tableau. Mon soucis, est qu'un prospect peut avoir plusieurs relances à son actif donc en exécutant ma requête j'obtiens des doublons ce qui fausse complètement mon tableau.

    Je voudrais donc savoir si il y avait un moyen d'exécuter ma requête afin d'obtenir uniquement la date de dernière relance d'un prospect ainsi que ses infos bien sur ?



    Voila la requête actuelle (sans traitement des relances, fonctionne parfaitement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * 
    FROM prospects 
      LEFT JOIN detail_prospects ON prospects.id_prospect = detail_prospects.id_prospect 
    ORDER BY date_contact DESC;
    Voila la requête qui me pose problème avec les doublons (avec traitement des relances) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * 
    FROM prospects 
      LEFT JOIN detail_prospects ON prospects.id_prospect = detail_prospects.id_prospect 
      LEFT JOIN relance_prospects ON prospects.id_prospect = relance_prospects.id_prospect 
    ORDER BY date_contact DESC;
    Petit complément d'info : la table relance_prospects est composée de 4 champs id_relance, id_prospect, date_relance, motif


    Merci pour votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Pour avoir la dernière date de relance, le plus simple est de faire un MAX... ça donne une requête un peu comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT prospects.* , detail_prospects.*, MAX(relance_prospects.date_relance)
    FROM prospects 
      LEFT JOIN detail_prospects ON prospects.id_prospect = detail_prospects.id_prospect 
      LEFT JOIN relance_prospects ON prospects.id_prospect = relance_prospects.id_prospect 
    GROUP BY prospects.* , detail_prospects.*
    ORDER BY date_contact DESC;
    Si tu veux le motif en plus, ça devient plus compliqué...
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Super merci beaucoup c'est exactement ce que je voulais.

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

Discussions similaires

  1. Requête sql multi-source avec jointure en pur VBA dans excel
    Par guidav dans le forum Général VBA
    Réponses: 1
    Dernier message: 21/09/2013, 20h33
  2. problèmes requête sql, dont lien avec la valeur d'un textbox
    Par Drone dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 12/02/2009, 17h28
  3. bouclage dans une requête SQL aec jointure
    Par lbar012001 dans le forum SQL
    Réponses: 4
    Dernier message: 31/10/2007, 17h58
  4. [Requête/SQL]Mise à jour avec condition
    Par atlantideD dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 22/04/2007, 23h14
  5. [SQL Server] "Jointure" avec histo inexistant
    Par Tankian dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/09/2006, 14h49

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