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 :

requete left join étrange


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 126
    Points : 71
    Points
    71
    Par défaut requete left join étrange
    Bonjour,
    voila je fais une requete du type
    select ... from A Left join B on ...
    Je fais cette requete dans le but de récupérer 100% des enregistrements
    de A avec, qd elles existent des infos de B.
    Or, le nombre d'enregistrement résultat est supérieur au nombre d'enregistrement de A ( et inférieur à B...)
    Comment est ce possible?
    PS je travaille sous postgres.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    La condition de jointure du ON est probablement inexacte.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Une question de cardinalités...
    Es-tu certain qu'il ne peut y avoir plus d'une ligne de B en correspondance avec une ligne de A ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 126
    Points : 71
    Points
    71
    Par défaut
    Derrière le ON il y a une combinaison de 3 conditions du style
    A.a=B.a AND A.b=B.b AND A.c=B.c

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 126
    Points : 71
    Points
    71
    Par défaut
    Effectivement il faudrait que je regarde plus précisement de ce coté.
    Il est en effet possible qu'il y ai plusieurs tuples dans B correspondant à ma requete mais je croyais que ce type de requete vérouillé ça en prennant le premier tuple de B...

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Citation Envoyé par noarno Voir le message
    Il est en effet possible qu'il y ai plusieurs tuples dans B correspondant à ma requete mais je croyais que ce type de requete vérouillé ça en prennant le premier tuple de B...
    Ben non

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 119
    Points : 31 627
    Points
    31 627
    Billets dans le blog
    16
    Par défaut
    Exemple :

    Jointure à gauche sur la colonne C.
    La table A contient 2 lignes, la table B 4 lignes et le résultat R 3 lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    A {C,    D }                   B {C,   E }
       c1    d1                      c1    e1
       c2    d2                      c1    e2 
                                     c3    e3 
                                     c4    e4 
    =>
    R {C,    D,    E }
       c1    d1    e1
       c1    d1    e2
       c2    d2    null

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 126
    Points : 71
    Points
    71
    Par défaut
    Merci pour l'exemple j'ai compris mon erreur.

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

Discussions similaires

  1. requete LEFT JOIN
    Par fadex dans le forum Langage SQL
    Réponses: 8
    Dernier message: 08/06/2007, 17h03
  2. [Mysql 3.23] Avis sur une requete LEFT JOIN
    Par griese dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/02/2007, 10h36
  3. Réponses: 3
    Dernier message: 13/11/2006, 18h06
  4. Requete Left join
    Par nicodour dans le forum Requêtes
    Réponses: 5
    Dernier message: 29/12/2005, 17h23
  5. Creer une requete avec des LEFT JOIN et des GRO
    Par donbuz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/09/2004, 16h53

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