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 :

[SQL SERVER]des doublons rebelles


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut [SQL SERVER]des doublons rebelles
    à tous
    J'ai un petit souci qui me chagrine. Jai une requête que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT LA_NAME
    FROM T_AT_ATTRIBUTE INNER JOIN T_LA_LAYER ON  LA_ID = AT_LA_ID
    WHERE AT_NAME='CCOSEC' OR AT_NAME='FEUILLE'
    ORDER BY LA_NAME
    Or cette requête me retourne ceci :
    --------------
    LA_NAME
    --------------
    bati
    parcelle
    parcelle
    section
    section
    --------------
    Pourquoi j'ai des doublons : :
    Je vois pas pourquoi je devrais faire un DISTINCT pour ne pas les avoir.
    d'avance.

  2. #2
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Ce doit être un problème avec les blancs, essaye cette requête et dit nous ce que ca retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT DISTINCT '--'+LA_NAME+'--'
    FROM T_AT_ATTRIBUTE INNER JOIN T_LA_LAYER ON  LA_ID = AT_LA_ID
    WHERE AT_NAME='CCOSEC' OR AT_NAME='FEUILLE'
    ORDER BY LA_NAME

  3. #3
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    m.... excuse moi ma requête c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT LA_NAME
    FROM T_AT_ATTRIBUTE INNER JOIN T_LA_LAYER ON  LA_ID = AT_LA_ID
    WHERE AT_NAME='CCOSEC' OR AT_NAME='FEUILLE'
    ORDER BY LA_NAME

  4. #4
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Je rejoins TheRussian pour dire que ce doit être un problème de caractères blancs dans les valeurs de ta table.

    Et tu as justement besoin d'un DISTINCT si tu ne veux pas avoir une valeur plusieurs fois.
    A++

  5. #5
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    même en mettant les blancs ça ne change rien je comprends pas sérieu.
    C'est bizarre qu'avec un OR il me sorte 2 fois une valeur si les 2 valeurs sont dans la table : il devrait me la sortir qu'une seule fois, c'est du bon sens.

  6. #6
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Est-ce que le champ LA_NAME n'est présent qu'une seule fois dans chacune des 2 tables que tu utilises ? Car si ce n'est pas le cas lors de la jointure tu doublonnes les lignes et l'utilisation du distinct est inévitable sinon il faut regarder si la zone LA_NAME ne contiendra pas :

    - 'parcelle'
    - 'parcelle '

    ce qui fait bien 2 valeurs différentes, et dans ce cas là utilise rtrim, ltrim, ou autre.

    je ne vois pas d'autre explication.

  7. #7
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    non non, je n'ai qu'une seulle fois LA_NAME et une seule fois 'parcelle' et 'section' seulement dans la table T_AT_ATTRIBUTE ces 2 LA_NAME (qui font parti de la table T_LA_LAYER) possèdent les 2 champs 'CCOSEC' et 'FEUILLE'.

  8. #8
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Dans ce cas, c'est normal que cela doublonne les champs, avec le distinct ca le fait plus..

    Je ne vois pas où est le problème ????

  9. #9
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    bè je ne comprends qu'en faisant un OU ça retourne 2 fois la valeur.
    Si je te demande : "Parmi ces 5 personnes qui sont les gens qui aime le football OU le rugby?" et que Paul aime les 2 sports tu va pa me dire "il y a Pierre, Paul, Paul, et Jacques" tu me diras "il y a Pierre, Paul et Jacques" je pensais que ça fonctionnais pareil en SQL.
    Mais apparemment non, ou alors je suis victime d'hallucination

  10. #10
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    La réponse a ton problème est dans un message similaire:

    http://www.developpez.net/forums/viewtopic.php?t=314505
    (mardi 22 mars, 2005 16:28 )

  11. #11
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    à tous
    Je m'en suis sorti en rajoutant un GROUP BY LA_ID mais ça reste tout de même un peu mystérieux ça.

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

Discussions similaires

  1. [T-SQL] - Gestion des doublons
    Par spezet29 dans le forum Développement
    Réponses: 2
    Dernier message: 03/09/2012, 12h08
  2. Réponses: 3
    Dernier message: 26/07/2009, 10h06
  3. [SQL] Suppression des doublons d'un champs SQL
    Par fabien14 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/05/2007, 14h28
  4. [SQL Server 2005] DELETE sur des doublons
    Par Shakta dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/05/2007, 11h13
  5. [C#] [SQL Server] Récupérer la liste des bases d'un serveur.
    Par exe dans le forum Accès aux données
    Réponses: 2
    Dernier message: 05/08/2004, 17h40

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