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 :

Éviter les doublons d'une colonne sur une requête ayant plusieurs jointures


Sujet :

Langage SQL

  1. #1
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut Éviter les doublons d'une colonne sur une requête ayant plusieurs jointures
    Bonjour,

    Je recommence le SQL et j'ai quelques problèmes :
    Voici mon code :
    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
     
    SELECT
    	d.id AS "id dossier client"
    	e.id AS "id dossier entrentien"
    	p.id AS "id prestation"
    FROM
    	cli_dossier AS d
    INNER JOIN
    	cli_dossier_prestation_relation AS r ON (r.dossier_id=d.id)
    INNER JOIN
    	cli_prestation AS p ON (p.id = r.prestation_id AND p.id=5)
    INNER JOIN
    	cli_dossier_entretien AS e ON (e.dossier_id = d.id AND e.mode_id =1)
    WHERE
    e.entretien_date BETWEEN '2014-05-01' AND '2014-05-31'-- mois de mai par ex.
    ORDER BY "id dossier client"
    J'obtiens le résultat en pièce jointe :

    Il y a deux fois l'id 9116, personne qui a donc plusieurs entretiens durant le mois, mais j'aimerais ne l'avoir qu'une fois pour compter les personnes.
    Avec un distinct, il s'applique sur toute la requête donc chaque ligne est différente.

    Comment faire ? Une idée?
    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 335
    Points
    335
    Par défaut
    Bonsoir,

    tout dépend de ce à quoi sert ta requête.

    Si elle n'a d'autre utilité que de dénombrer tes clients, il te suffit de supprimer e.id et p.id de ta clause SELECT, ce qui te permettra de réaliser un SELECT DISTINCT d.id (tu pourrais même le chaîner avec un COUNT pour obtenir directement le comptage).

    En revanche, dans la jointure ci-dessous...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INNER JOIN
    	cli_prestation AS p ON (p.id = r.prestation_id AND p.id=5)
    ... je ne comprends pas le sens de cette double-condition portant sur p.id. L'une des deux conditions semble de trop.

  3. #3
    Membre habitué

    Profil pro
    Consultant Business Intelligence
    Inscrit en
    Novembre 2005
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant Business Intelligence

    Informations forums :
    Inscription : Novembre 2005
    Messages : 284
    Points : 186
    Points
    186
    Par défaut
    Merci de ta réponse.

    En fait ce n'est pas le nombre de clients, mais le nombre de clients qui ont eu un entretien où la prestation est de type X.
    p.id = 5 => prestation.name = x.
    Sans la double condition, j'aurais les prestations, x,y,z

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Réponses: 2
    Dernier message: 18/11/2012, 11h25
  3. [SP-2010] Faire une somme sur une colonne d'une liste
    Par sebfreu dans le forum SharePoint
    Réponses: 6
    Dernier message: 19/01/2012, 11h05
  4. Réponses: 1
    Dernier message: 30/08/2011, 09h53
  5. [XL-2003] Affichage date du mois en cours sur une colonne et une ligne sur trois
    Par altra dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/08/2009, 07h51

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