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 :

inner join ou where ?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut inner join ou where ?
    Bonjour,

    pour relier ou plusieurs tables via leur clés primaires communes j'ai toujours lu (et on m'avait appris) à utiliser la clause where pour lier les 2 clés en communs entre les tables.

    ex :

    where table1.id_champ1=table2.id_champ2

    champ_1 et champ_2 ayant le même numéro identifiant unique.

    or je me retrouve avec des inner join on dans le code que j'ai à modifier.

    quelle est la différence et comment m'en sortir avec des inner join on ???


    Merci.

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    bonjour,

    on va dire que la jointure par un 'join' est a privilgier
    tu peux lire ceci : http://sql.developpez.com/sqlaz/jointures/

    il n'y a pas de différences notables à part niveau performances peut etre. La jointure avec le 'where' est juste plus ancienne

    bon courage

    Michel

  3. #3
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 218
    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 218
    Billets dans le blog
    16
    Par défaut
    C’est juste un problème de syntaxe. Dans le temps on écrivait "Where t1.Col1 = t2.Col2". Puis est arrivée la jointure externe (Outer Join) et par souci d’homogénéité, on a utilisé le terme Inner Join pour qualifier notre bonne vieille jointure du bon vieux temps.

    Les anciens dont je fais partie) écrivent généralement :

    Select ...
    From t1, t2
    Where t1.Col1 = t2.Col2

    et les modernes écrivent

    Select ...
    From t1 Inner Join t2 On t1.Col1 = t2.Col2

    mais c’est strictement équivalent. Si les programmes à maintenir comportent Inner Join, autant ne pas modifier.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Par défaut
    merci pour vos réponses.

    ajout : j'ai trouvé ici l'explication donnée, même si j'ai toujours connu where donc en sql : http://cerig.efpg.inpg.fr/tutoriel/b...ees/chap20.htm

    j'ai du mal à me retrouver dans le code de la requête car il y a join de join (entre parenthèses).
    Vous avez un conseil à me donner ? un lien de cours pour comprendre avec plusieurs tables ? (j'ai lu le lien donné plus haut).

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    essaie de comprendre comment cela marche avec un seul join. apres cest toujours le même principe en liant des tables supplémentaires

    tu peux toujours mettre un exemple de requete que tu ne comprends pas

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 137
    Par défaut
    L'intérêt d'utiliser inner join, c'est aussi la lisibilité du code.
    On peut séparer ce qui relève de la jointure (dans le ON du JOIN) de ce qui relève du filtre (avec WHERE).

    Ensuite, théoriquement, c'est l'optimiseur qui détermine l'usage d'index, que la jointure soit effectuée dans le WHERE ou dans le JOIN.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Performances : INNER JOIN vs WHERE
    Par zeclubbeur dans le forum Débuter
    Réponses: 2
    Dernier message: 12/02/2012, 18h52
  2. INNER JOIN ou WHERE
    Par Thierry8 dans le forum Requêtes
    Réponses: 7
    Dernier message: 12/02/2006, 17h45
  3. Jointures : INNER JOIN vs WHERE
    Par vic dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/02/2006, 12h05
  4. INNER JOIN et WHERE...=
    Par say dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/06/2005, 16h34
  5. INNER JOIN ou WHERE ...
    Par maitrebn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/10/2004, 14h14

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