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 :

La jointure crée des doublons


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut La jointure crée des doublons
    bonjour,


    je voudrai faire une jointure entre deux table genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM annonces JOIN LEFT base-officielle-des-codes-postaux ON annonces.code_ville_insee = base-officielle-des-codes-postaux.INSEE

    le problème c'est que j'ai plusieurs enregistrement avec le m^me champs INSEE du coup ça me dédouble mes annonces.... alors que la valeur que je veux récupérer dans base-officielle-des-codes-postaux est identique pour les enregistrements ayant le m^me insee.

    ma question est donc comment ne pas avoir ce phénomène de doublon ?

    merci par avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 870
    Points
    12 870
    Par défaut
    Bonjour,
    Peut-être avec un DISTINCT ?

    Tatayo.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut
    bonjour merci de votre reponse, je vais tester mais a mon avis ca risque de pas fonctionneR.

    je me demande si je pourrai faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM annonces JOIN LEFT base-officielle-des-codes-postaux ON annonces.code_ville_insee = base-officielle-des-codes-postaux.INSEE AND annonces.ville = base-officielle-des-codes-postaux.ville
    mais je doute que cela existe...

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 092
    Points : 9 475
    Points
    9 475
    Par défaut
    Distinct semblait pas mal. Peut-être que la 2ème proposition va marcher. La syntaxe semble correcte, mais est-ce que le résultat va être celui attendu ? pas sûr, Le descriptif des données initiales n'est pas suffisamment clair.

    Si distinct ne marche pas dans tous les cas, et si la dernière requête ne marche pas dans tous les cas non plus, il va falloir passer aux grands moyens : Group By.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 300
    Points : 39 641
    Points
    39 641
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par fwebconcept Voir le message
    je me demande si je pourrai faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM annonces JOIN LEFT base-officielle-des-codes-postaux ON annonces.code_ville_insee = base-officielle-des-codes-postaux.INSEE AND annonces.ville = base-officielle-des-codes-postaux.ville
    La syntaxe est incorrecte : JOIN LEFT à remplacer par LEFT JOIN ou LEFT OUTER JOIN
    De plus vous pouvez utiliser des alias pour éviter de trimbaler des noms à rallonge
    Aussi évitez le select * qui est dangereux
    Enfin, un peu de mise en forme ne nuit pas , exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT Col1
         , Col2
         , ...
         , Coln
    FROM annonces AN
    LEFT JOIN base-officielle-des-codes-postaux CP
      ON CP.INSEE = AN.code_ville_insee 
     AND CP.ville = AN.ville

    Citation Envoyé par tbc92 Voir le message
    Distinct semblait pas mal. Peut-être que la 2ème proposition va marcher. La syntaxe semble correcte, mais est-ce que le résultat va être celui attendu ? pas sûr, Le descriptif des données initiales n'est pas suffisamment clair.

    Si distinct ne marche pas dans tous les cas, et si la dernière requête ne marche pas dans tous les cas non plus, il va falloir passer aux grands moyens : Group By.
    Comme indiqué ci-dessus, la syntaxe est incorrecte.
    Faire un distinct sur un select * n'a pas de sens, un group by non plus, et faire un group by sans fonction d'agrégation n'a pas d'intérêt.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut
    super merci je vais faire un essai !

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 300
    Points : 39 641
    Points
    39 641
    Billets dans le blog
    9
    Par défaut
    Heu... la requête que j'ai postée est seulement une correction de syntaxe et de forme de la votre, mais elle ne dédoublonne pas

    Avant de dé-doublonner, identifiez les colonnes requises en remplacement du select *

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut
    rebonjour,

    j'ai toujours les doublons,



    (voir code plus bas)

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 300
    Points : 39 641
    Points
    39 641
    Billets dans le blog
    9
    Par défaut
    ajoutez distinct

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut
    et c'est la que j'ai mon probleme

    (voir code plus bas)

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 300
    Points : 39 641
    Points
    39 641
    Billets dans le blog
    9
    Par défaut
    La syntaxe est SELECT DISTINCT Col1, col2, ... Coln
    il faut mettre le mot clef "DISTINCT" juste après le SELECT

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut
    merci ,

    mais j'ai encore des doublon ! j'ai plus de lignes apres avoir ajouté la jointure


    voir code plus bas

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 870
    Points
    12 870
    Par défaut
    On peut avoir un jeu de test, ainsi que le résultat souhaité et le résultat obtenu ?
    Car je ne vois pas comment on peut avoir des doublons avec un DISTINCT, qui justement supprime les doublons.

    Tatayo.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut
    je viens d'etudier les resultat le probleme viens des colones longitudes et latitudes...

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut
    voila c'est bon j'ai résolu mon problème, j'ai rajouté un AND supplementaire et j'obtient exactement le même nombre d'annonces.

    merci à tous !!!

  16. #16
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 300
    Points : 39 641
    Points
    39 641
    Billets dans le blog
    9
    Par défaut
    Des explications détaillées seraient intéressantes, car les requêtes que vous avez postées n'avaient pas "DISTINCT" du coup...

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Octobre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Octobre 2006
    Messages : 58
    Points : 38
    Points
    38
    Par défaut
    vous pouvez trouver ma requête finale sur ce nouveau post https://www.developpez.net/forums/d1...l/#post9413412

    bien qu'elle fonctionne, la requête est assez longue.

    PS : j'ai crée un autre topic, car le problème n'est plus le même je sais pas si j'ai eu raison...

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

Discussions similaires

  1. NuméroAuto qui crée des doublons!
    Par Chrysostome dans le forum VBA Access
    Réponses: 21
    Dernier message: 03/05/2016, 16h02
  2. REPLACE crée des doublons ?
    Par éric1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/08/2009, 16h07
  3. saveOrUpdate() qui crée des doublons lors de l'update
    Par tamiii dans le forum Hibernate
    Réponses: 1
    Dernier message: 21/04/2009, 15h44
  4. Pb : jointure génère des doublons
    Par patbeautifulday dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 23/03/2009, 11h43
  5. Un EDIT/UPDATE me crée des doublons
    Par apprenti46 dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/09/2008, 13h58

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