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 :

Interrogation sur le LEFT JOIN


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut Interrogation sur le LEFT JOIN
    Bonjour,
    Comme vous l'avez sûrement compris, je pose des questions sur le fonctionnement du LEFT JOIN. On est d'accord que le LEFT JOIN permet de faire une jointure entre deux tables et si il ne trouve pas de correspondance dans la table situé à droite du LEFT JOIN, il met la valeur des champs à NULL, exact ? Donc en fait j'aurai voulu savoir ce qui se passe dans le cas inverse. C'est à dire si dans la même requête, par exemple celle-ci,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM table1 LEFT JOIN table2 ON id1=id2;
    Je n'ai pas de correspondance dans la table de droite ? Je pose cette question car je fais des jointures sur des tables et en fait je voudrait simplement rajouter des infos au bout de chaque ligne de ma premiere table. Donc en fait, normalement, à la sortie de ma jointure, je devrai avoir le même nombre de lignes que ma table d'origine. Et dans mon cas j'ai ai plus, 200000 de plus). j'espère avoir été assez clair et que vous pourrez m'éclaircir les idées sur ce problème

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Comme tu l'as compris, LEFT JOIN retourne toutes les lignes de la table de gauche et seulement celles de la table de droite pour lesquelles la condition est vérifiée.


    1° Lorsque la condition n'est pas vérifiée, l'enregistrement correspondant contiendra les champs de la table de gauche et NULL pour ceux de la table de droite.

    2° Lorsque la condition est vérifiée, l'enregistrement correspondant contiendra les champs des tables de gauche et de droite.

    Le nombre de résultats retournés par la requête est au minimum égal au nombre d'enregistrements dans la table de gauche (car 1° ).
    Ce nombre peut être plus élevé lorsque la condition est vérifiée plusieurs fois pour un même enregistrement de la table de gauche.

    En prenant ton exemple :
    Lorsqu'aucun id2 ne correspond à id1, id2 sera égal à NULL et 1 ligne sera retournée.
    Lorsque plusieurs id2 correspondent à id1, il y aura autant de lignes de résultat.

    je devrai avoir le même nombre de lignes que ma table d'origine.
    Le nombre d'enregistrement dans la table de gauche indique seulement le nombre minimum de résultats.

  3. #3
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Ok d'accord, j'ai remarqué que j'avais quelques doublons mais un peu trop à mon goût. Donc je voulais une confirmation et je l'ai. Merci beaucoup pour ton explication

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 882
    Points : 53 066
    Points
    53 066
    Billets dans le blog
    6
    Par défaut
    A lire pour comprendre les LEFT OUTER JOIN.
    http://sqlpro.developpez.com/cours/s...ointures/#L2.3

    Ce qui vous manque c'est que vous n'écrivez pas la jointure correctement. En utilisant l'abréviation LEFT JOIN vous croyez de manière érronée que cette jointure est interne. Rectifiez vos requêtes en identiquant toujours le mot clzef OUTER, la différenc vous sautera aux yeux immédiatement !
    De même le JOIN doit s'écrire INNER JOIN;
    JE sais, vous êtes faignant...

    A +

  5. #5
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    Ah ça je ne le savais pas, ce n'est pas une question de feignantise mais d'ignorance... Enfin bref je testerai avec le OUTER JOIN et comparerai. Merci beaucoup pour cette précision.

Discussions similaires

  1. tester concordance sur 2 LEFT JOIN
    Par charlene44 dans le forum Requêtes
    Réponses: 7
    Dernier message: 30/03/2011, 23h24
  2. Problème sur un left join en version 4 mais pas en 5 !
    Par Christophe Charron dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/05/2007, 20h45
  3. LEFT JOIN sur sous requete
    Par passie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/06/2006, 12h51
  4. left join multiple sur grosses tables
    Par hn2k5 dans le forum Requêtes
    Réponses: 6
    Dernier message: 30/11/2005, 16h10
  5. Question sur utilisation du JOIN LEFT ON
    Par carolinebelle dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/07/2005, 13h57

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