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 :

Ne pas obtenir de doublons dans les résultats.


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut Ne pas obtenir de doublons dans les résultats.
    Bonjour,

    j'ai écrit une requete pour visualiser des infos sur l'activité de certains employés.
    Le soucis, c'est qu'il arrive que des lignes apparaissent en double.
    Je voudrai savoir comment modifier ma requete pour qu'un seul résultat soit affiché, c'est à dire supprimer les doublons
    .
    Voici la requete. Je travaille sur sql server 2005
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    --Identifiant, ouvert par, ferme par, à la date désignée et à quelle heure
    --ordonnée suivant l'id de fermeture
    SELECT [Full Name],[Seq.Assigned To], [Seq.SupportStaff], [Seq.Open By], [Seq.Closed By], [Close Date], [Close Time]
     
    FROM  MAGIC._SMDBA_.Incident I, MAGIC._SMDBA_.[Groups Details] G
     
    WHERE I.[Close Date]='06/26/2007' AND
    [Seq.Assigned To] IS NOT NULL AND
    I.[GROUP Name]='EHSFAC-SERVICEDESK2' AND
    I.[Seq.Assigned To] = G.[Seq.SupportStaff]
     
     
    ORDER BY [Seq.Closed By]

    Voici ce que j'obtiens :
    http://img526.imageshack.us/my.php?image=imagelv1.jpg

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 114
    Points : 122
    Points
    122
    Par défaut
    Les lignes ne sont pas identiques !
    La colonne Close Time change sur chaque ligne

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par dinguot
    Les lignes ne sont pas identiques !
    La colonne Close Time change sur chaque ligne
    Si il y a bien des doublons pour Sébastien Laurent dans l'exemple.

  4. #4
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    donc tu ajoutes un DISTINCt au début de ton SELECT.

    genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    SELECT DISTINCT ....
    FROM ....
    si j'ai bien compris ta question...
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  5. #5
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    La requete correcte qui ne donne plus de doublons est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    --Sans les doublons pour les niveaux 1 et 2
    --Identifiant, ouvert par, ferme par, à la date désignée et à quelle heure
    --ordonnée suivant l'id de fermeture
    SELECT DISTINCT [Full Name],[Seq.Assigned To], [Group Name], [Seq.SupportStaff], [Seq.Open By], [Seq.Closed By], [Close Date], [Close Time]
     
    FROM  MAGIC._SMDBA_.Incident I, MAGIC._SMDBA_.[Groups Details] G
     
    WHERE I.[Close Date]='06/26/2007' AND
    [Seq.Assigned To] IS NOT NULL AND
    (I.[GROUP Name]='EHSFAC-SERVICEDESK1' OR I.[GROUP Name]='EHSFAC-SERVICEDESK2') AND
    I.[Seq.Assigned To] = G.[Seq.SupportStaff]
     
    ORDER BY [Group Name]
    qui donne comme résultat:
    http://img520.imageshack.us/my.php?image=imagejn4.jpg

    Ensuite, j'ai crée une nouvelle requete pour compter les differents fichiers ouverts, fermes:
    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
    SELECT DISTINCT [Full Name] AS PERSONNE,
    	   [GROUP Name] AS EQUIPE,  
           SUM(CASE  
                  WHEN [Seq.Assigned TO] = [Seq.Open BY] THEN 1
                  ELSE 0
               END) AS OUVERT,
    		SUM(CASE  
                  WHEN [Seq.Assigned TO] = [Seq.Closed BY] THEN 1
                  ELSE 0
               END) AS FERME,
    		SUM(CASE  
                  WHEN [Seq.Open BY] = [Seq.Closed BY] THEN 1
                  ELSE 0
               END) AS [OUVERT & FERME]
     
    FROM   MAGIC._SMDBA_.[Groups Details] G
           INNER JOIN MAGIC._SMDBA_.Incident I
                 ON I.[Seq.Assigned TO] = G.[Seq.SupportStaff]
     
    WHERE I.[Close Date]='06/26/2007' AND
    (I.[GROUP Name]='EHSFAC-SERVICEDESK1' or I.[GROUP Name]='EHSFAC-SERVICEDESK2')
     
    GROUP  BY [Full Name], [GROUP Name]
    Mais cette requete compte les doublons alors que DISTINCT est bien présent.
    Ce que j'obtiens :
    http://img253.imageshack.us/my.php?image=image2qf4.jpg

    Visiblement ajouter DISCTINCT ne suffit pas pour cette nouvelle requête.
    Que faut-il ajouter ?


    Edit : je n'ai que les droits en lecture dans la base de données. Je ne peux donc pas créer de table

    Merci

  6. #6
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    tu n'a pas de doublons si on considère que tu groupes sur [Full Name] et [GROUP Name]. tu n'a bien qu'une seule fois le nom

    si c'est les 12 par exemple qui te gênes c'est une erreur du SUM.

    qu'est ce que tu veux compter exactement ?
    Errare humanum est, perseverare diabolicum (Sénèque)

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    J'ai résolu mon pb en fait comme 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
    SELECT [Full Name] AS PERSONNE,
    	   [GROUP Name] AS EQUIPE,
           SUM(CASE  
                  WHEN [Seq.Assigned TO] = [Seq.Open BY] THEN 1
                  ELSE 0
               END) AS OUVERT,
    		SUM(CASE  
                  WHEN [Seq.Assigned TO] = [Seq.Closed BY] THEN 1
                  ELSE 0
               END) AS FERME,
    		SUM(CASE  
                  WHEN [Seq.Open BY] = [Seq.Closed BY] THEN 1
                  ELSE 0
               END) AS [OUVERT & FERME]
    FROM MaTable
    En considérant que MaTable est le résultat de la requete que j'avais écrit plus haut.
    Je devais compter pour chaque personne le nombre de fichiers qu'elle a ouverts, fermés, ouverts & fermés

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

Discussions similaires

  1. Une requête qui donne des doublons dans les résultats
    Par HDR_16 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/04/2014, 18h51
  2. Empêcher les doublons dans le résultat de la requête
    Par bouba_95 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/07/2007, 18h32
  3. Aberration dans les résultat d'un SELECT
    Par tpatrice2003 dans le forum Oracle
    Réponses: 1
    Dernier message: 13/06/2006, 09h43
  4. Requête SELECT problème dans les résultats trouvés ...
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/10/2005, 12h46
  5. [CR] doublon dans les valeurs
    Par Gaëtane dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 02/06/2004, 15h25

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