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

MS SQL Server Discussion :

probleme de doublon


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Par défaut probleme de doublon
    bonjour,

    j'ai un probleme avec cette requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select agent.code_agent,agent.nom_agent,agent.prenom_agent,indisponibilte.date_debut_indisponibilte,indisponibilte.date_fin_indisponibilte,decision.date_debut_decision,decision.date_fin_decision,decision.code_agent,indisponibilte.code_agent
    from agent
    LEFT OUTER JOIN decision on agent.code_agent=decision.code_agent
    LEFT OUTER JOIN indisponibilte on agent.code_agent=indisponibilte.code_agent
    where decision.date_fin_decision>='2013-07-02' and indisponibilte.date_fin_indisponibilte<'2013-06-01' or indisponibilte.date_fin_indisponibilte is null
    avec cette requete je veux afficher les agents qu'ils ont une decision qui termine après une date 'x' et une indisponibilite qui termine avant une date 'y' s'ils ont une

    quand j’exécute cette requete elle me donne ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    code_agent           nom_agent       prenom_agent    date_debut_indisponibilte date_fin_indisponibilte date_debut_decision date_fin_decision code_agent           code_agent
    -------------------- --------------- --------------- ------------------------- ----------------------- ------------------- ----------------- -------------------- --------------------
    00126ab9             vimp            toma            NULL                      NULL                    2011-01-01          2012-01-01        00126ab9             NULL
    00126ab9             vimp            toma            NULL                      NULL                    2013-01-01          2014-01-01        00126ab9             NULL
    00265ab96            MZ              xxxx            2013-04-01                2013-04-02              2013-01-01          2014-01-01        00265ab96            00265ab96
    j'ai essayé avec DISTINCT mais toujours le meme probleme help svp

    merci

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    C'est parce que votre agent 'vimp' à plusieurs décisions qui répondent au critère : l'une du '2011-01-01', l'autre du '2013-01-01'

    Dans ce cas, quelle décision voulez-vous prendre ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Par défaut
    bonjour
    c'est la derniere décision qui m'intéresse et c'est la meme chose pour indisponibilite
    quand j'exécute la requete sans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and indisponibilte.date_fin_indisponibilte<'2013-06-01' or indisponibilte.date_fin_indisponibilte is null
    il n y a pas de doublon

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    pas sûr d'avoir tout compris

    que donne ceci :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    ;WITH CTE AS (
    SELECT     
        agent.code_agent,
        agent.nom_agent,
        agent.prenom_agent,
        indisponibilte.date_debut_indisponibilte,
        indisponibilte.date_fin_indisponibilte,
        decision.date_debut_decision,
        decision.date_fin_decision,
        decision.code_agent,
        indisponibilte.code_agent
        ,ROW_NUMBER() OVER(
            PARTITION BY agent.code_agent 
            ORDER BY indisponibilte.date_fin_indisponibilte, decision.date_fin_decision
        ) AS Rn
    FROM agent
    INNER JOIN decision 
        ON agent.code_agent=decision.code_agent
    INNER JOIN indisponibilte 
        ON agent.code_agent=indisponibilte.code_agent
    WHERE 
        decision.date_fin_decision>='2013-07-02' 
    AND indisponibilte.date_fin_indisponibilte<'2013-06-01' 
    )
    SELECT 
        agent.code_agent,
        agent.nom_agent,
        agent.prenom_agent,
        indisponibilte.date_debut_indisponibilte,
        indisponibilte.date_fin_indisponibilte,
        decision.date_debut_decision,
        decision.date_fin_decision,
        decision.code_agent,
        indisponibilte.code_agent
    FROM CTE
    WHERE Rn = 1

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Par défaut
    quand j'execute jai un message d'erreur : La colonne 'code_agent' a été spécifiée plusieurs fois pour 'CTE'

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    supprimez les code_agent en trop pour n'en garder qu'un puisque, étant dans la condition de jointure, ces différentes colonnes auront toujours les même valeurs pour une ligne donnée. Sinon donnez des alias aux colonne de la CTE... j'avais reprise telle quelle votre requête.

  7. #7
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    J'imagine que le problème vient des deux premières lignes ? Elles ont une date de fin de décision différentes, donc forcément DISTINCT ne vas pas les dédoublonner.

    Si vous voulez n'avoir qu'une seule ligne par agent, il va falloir faire des jointures avec des sous-requêtes groupées des autres tables, ce qui permettra de trouver une façon de choisir LA valeur pour chaque colonne (forcément, s'il y a 2 lignes c'est qu'il y a 2 valeurs différentes, laquelle choisir ?).

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

Discussions similaires

  1. Problemes de doublons...comment les éviter?
    Par paflolo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/02/2006, 14h57
  2. [xslt] probleme de doublons
    Par boudha45 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 06/01/2006, 14h09
  3. [requete-sqlserver]probleme de doublons
    Par shirya dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/10/2005, 10h31
  4. Problème de doublon
    Par Oberown dans le forum Schéma
    Réponses: 1
    Dernier message: 09/09/2004, 16h06
  5. Probleme de doublons...
    Par kv000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/08/2004, 10h25

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