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 :

Éviter les doublons dans une requete


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut Éviter les doublons dans une requete
    Voila j'ai cette requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT tblDownTimeReport.DownTimeReportID , tblDownTimeReport.ApplicationTypeNameID , tblDownTimeReport.ResolutionID , tblDownTimeReport.ProblemStarted , tblDownTimeReport.ServiceRestored , tblDownTimeReport.HeatCallId , tblDownTimeReport.ElixCallId , tblDownTimeReport.Description , tblDownTimeReport.ProblemAnalysis , tblDownTimeReport.Prevention , tblDownTimeReport.MethodUsed , tblDownTimeReport.BusinessImpact , tblDownTimeReport.PersonResponsible , tblDownTimeReport.TotalDownTime , tblDownTimeReport.Primm , tblDownTimeReport.CauseID , tblDownTimeReport.StatutID , tblDownTimeReport.FollowUpRequiredID , tblDownTimeReport.Suivi , tblDownTimeReport.Commentaire , tblDownTimeReport.IsValidReport , tblDownTimeReport.CreatorName FROM tblDownTimeReport 
    left join tblCrossdowntimeSitename on tblCrossdowntimeSitename.DownTimeReportID = tblDownTimeReport.DownTimeReportID left join tblApplicationTypeName on tblApplicationTypeName.ApplicationTypeNameID = tblDowntimeReport.ApplicationTypeNameID WHERE ((tblDownTimeReport.DownTimeReportID > 1 ) AND (tblDownTimeReport.DownTimeReportID < 100 ) )    ORDER BY tblApplicationTypeName.ApplicationName ASC
    j'aimerai que les doublons de ce id unique (tblDownTimeReport.DownTimeReportID ) n'apparaise qu'une seule fois, mais le dictinct ne fonctionne pas il me dit qu'il faut qu'il apparaise aussi dans le order by

    Est-ce ma requete qui fait apparaitre des doublons !?!?

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Franchement, je n'ai rien compris.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Ok si je résume. Je veux savoir si il existe une facon de faire de requete et d'éliminé les doublons

    car si j'ajoute cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT [b]DISTINCT[/b]
    J'ai cette erreur
    ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
    je comprend pas ce que je dois faire pour éliminé cette erreur !!!
    [/quote]

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Déjà, quand vous utilisez un DISTINCT, vous n'avez plus besoin d'ajouter la clause order by car c'est déjà intégré !!!
    En plus, quel est la définition d'un doublon pour ton cas ?

    sinon j'aurais fait plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  DISTINCT T.DownTimeReportID , T.ApplicationTypeNameID , T.ResolutionID , 
    	T.ProblemStarted , T.ServiceRestored , T.HeatCallId , T.ElixCallId , 
    	T.Description , T.ProblemAnalysis , T.Prevention , T.MethodUsed , 
    	T.BusinessImpact , T.PersonResponsible , T.TotalDownTime , 
    	T.Primm , T.CauseID , T.StatutID , T.FollowUpRequiredID , T.Suivi ,
    	 T.Commentaire , T.IsValidReport , T.CreatorName 
    FROM tblDownTimeReport T left join tblApplicationTypeName N 
    	on N.ApplicationTypeNameID = T.ApplicationTypeNameID 
    WHERE (T.DownTimeReportID BETWEEN  1 AND 100 )

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Un doublons pour moi dans ce cas c'est deux fois la même ligne qui reviens plusieurs fois. Du probaplement a un produit cartésien fait par mssql Ou de ma requete qui est réellement mauvaise

    Quand j'enleve le order by j'ai maintenant cette erreur
    The text, ntext, or image data type cannot be selected as DISTINCT.
    J'ai effectivement des champs de type ntext il serai mieux des enlever !?!

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Effectivement, tu dois modifier les types de tes colonnes en text vers varchar(n).

    Tu peux d'abord créer un diagramme pour ta base de donnée.
    Dans ce Diagramme, tu cliques droit sur la table que tu veux modifier pour choisir les propriétés de la table.
    Et la vous faites vos modifications graphiquement.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  7. #7
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Ok le distinc fonctionne parfaitement, mais maintenant je veux ordonnée mes informations par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT DISTINCT
        tblDownTimeReport.* 
    FROM 
        tblDownTimeReport 
    LEFT JOIN 
        tblCrossdowntimeSitename on    tblCrossdowntimeSitename.DownTimeReportID = tblDownTimeReport.DownTimeReportID
    LEFT JOIN 
        tblApplicationTypeName on tblApplicationTypeName.ApplicationTypeNameID = tblDowntimeReport.ApplicationTypeNameID
    ORDER BY 
        tblApplicationTypeName.ApplicationName ASC
    Ou vu la présence d'un distinct il est absolument imposible de pouvoir ordonner ?

  8. #8
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    C'est pour ce genre de chose qu'on peut faire confiance au sous-requêtes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT *
    FROM (
    SELECT  DISTINCT T.DownTimeReportID , T.ApplicationTypeNameID , T.ResolutionID , 
       T.ProblemStarted , T.ServiceRestored , T.HeatCallId , T.ElixCallId , 
       T.Description , T.ProblemAnalysis , T.Prevention , T.MethodUsed , 
       T.BusinessImpact , T.PersonResponsible , T.TotalDownTime , 
       T.Primm , T.CauseID , T.StatutID , T.FollowUpRequiredID , T.Suivi , 
        T.Commentaire , T.IsValidReport , T.CreatorName 
    FROM tblDownTimeReport T left join tblApplicationTypeName N 
       on N.ApplicationTypeNameID = T.ApplicationTypeNameID 
    WHERE (T.DownTimeReportID BETWEEN  1 AND 100 )  
    ) Resultat
    ORDER BY ApplicationTypeNameID
    Bon enfin c'est un model !!!
    Je crois qu'il te faut amender un peu.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  9. #9
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Points : 77
    Points
    77
    Par défaut
    Je comprend merci beaucoup !

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

Discussions similaires

  1. Comment éviter les doublons dans une ComboBox
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 27/07/2017, 16h03
  2. éviter les doublons dans une BDD
    Par VIRGINIE87 dans le forum Langage
    Réponses: 9
    Dernier message: 25/03/2010, 17h19
  3. problème pour éviter les doublons dans une table
    Par bonnet85 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/02/2008, 04h35
  4. empecher les doublons dans une requete
    Par Kallamou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/02/2007, 16h21
  5. Eviter les doublons dans une requete ?
    Par DrySs dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/03/2006, 05h24

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