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

Affichage des résultats du sondage: Comment faites-vous vos jointures ?

Votants
33. Vous ne pouvez pas participer à ce sondage.
  • Avec la synthaxe normalisées JOIN.

    14 42,42%
  • JOIN c'est quoi ? Dans ma clause WHERE.

    1 3,03%
  • Avant je les faisais dans mon WHERE, mais je me suis mis à niveau avec le JOIN.

    10 30,30%
  • Je n'ai pas envie de me mettre à niveau, j'utilise toujours le clause where.

    6 18,18%
  • Mon SGBD ne gère la syntaxe JOIN. Je suis donc obligé de passer par WHERE.

    2 6,06%
Langage SQL Discussion :

[Sondage] Jointures dans WHERE ou avec JOIN ?


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut [Sondage] Jointures dans WHERE ou avec JOIN ?
    Suite au post :
    http://www.developpez.net/forums/sho...d.php?t=195327

    Je m'interroge sur le gestion des jointures dans le monde SQL. Il semblerait en effet que pas mal de monde soit rester aux jointures dans la clause WHERE. Quelles en sont les raisons ?

  2. #2
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Pour ma part, j'ai appris à faire mes jointures dans le WHERE.

    J'ai voulu me mettre à niveau récemment mais mon SGBD ne gère pas la syntaxe JOIN .

  3. #3
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    moi je fais les jointures avec join.
    j'ai appris par moi meme. au départ je trouvais plus facile de le faire dans le WHERE mais à force d'entendre que ce n'etait pas normalisé je me suis mis tres rapidement au JOIN

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 803
    Points
    30 803
    Par défaut
    J'ai appris avec JOIN et, quand j'ai dû travailler sur Oracle, j'écrivais mes requêtes avec le JOIN en commentaire que je convertissais en WHERE dans le code...
    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.

  5. #5
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Bonjour,


    Pour ma part, durant mon cursus scolaire, l'on m'a uniquement appris ( et donc je ne connaissais pas les jointures avec JOIN) à faire mes jointures dans la clause WHERE. Ce n'est qu'en entreprise où j'ai peu à peu modifier cette habitude , et donc utilisé JOIN.

    @++
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  6. #6
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par trinityDev
    Bonjour,


    Pour ma part, durant mon cursus scolaire, l'on m'a uniquement appris ( et donc je ne connaissais pas les jointures avec JOIN) à faire mes jointures dans la clause WHERE. Ce n'est qu'en entreprise où j'ai peu à peu modifier cette habitude , et donc utilisé JOIN.
    Idem. En école, on ne nous a pas parlé de JOIN, j'ai découvert cette syntaxe sur ce forum.

    Il semblerait que la formation SQL dispensée au niveau scolaire ne soit pas tout à fait à jour. Ca craint !

  7. #7
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Après 3 mois intensif à faire du SQL et PL/SQL ( et a galerer sur des problèmes de dates ), je confirme que l'enseignement n'est plus à jour, et pourtant il me reste deux ans...à apprendre les mêmes choses en SQL...
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  8. #8
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Je crois qu'on est tous d'accord pour dire que l'écriture d'une jointure avec la clause JOIN est supérieure en lisibilité et en clarté à celle avec la clause WHERE ...
    Par contre, il faut bien aussi constater qu'on trouve encore beaucoup de requêtes de jointure écrites avec la clause WHERE et ceci pour tout un tas de raisons ...
    Pour moi il est clair qu'il faut donc connaître et maîtriser les deux syntaxes.
    J'ajouterais que pour une jointure interne, la sémantique et les accès sont strictements identiques. Donc à mon avis, cette question est un point de détail et ne mérite vraiment pas qu'on en fasse tout un plat ...
    Encore une fois je ne parle que des jointures internes ... les autres types de jointure ne peuvent s'exprimer que par la clause JOIN et là il n'y a plus matière à débat ...

  9. #9
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Citation Envoyé par Luc Orient
    Pour moi il est clair qu'il faut donc connaître et maîtriser les deux syntaxes.
    Entièrement d'accord. Le problème c'est que l'apprentissage et la pratique ne laissent pas à la place aux 2 syntaxes.

    Par exemple, sur le forum j'ai tendance à laisser tomber les problèmes de requêtes avec JOIN étant donné que le temps que je passe du mode WHERE au mode JOIN est apparu.

  10. #10
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Je me permets un petit rappel pour ceux qui ne seraient pas sûrs de la conduite à adopter, suite à la lecture de ce sondage :
    - Cours sur les jointures : Les jointures, ou comment interroger plusieurs tables
    - En particulier : 1.2. Différents type de jointures (naturelles, équi, non equi, auto, externes, hétérogènes, croisée et union)
    UN CONSEIL IMPORTANT

    Dans la mesure du possible, utilisez toujours un opérateur de jointure normalisé Sql2 (mot clef JOIN).

    En effet :
    • Les jointures faites dans la clause WHERE (ancienne syntaxe de 1986 !) ne permettent pas de faire la distinction de prime abord entre ce qui relève du filtrage et ce qui relève de la jointure.
    • Il est à priori absurde de vouloir filtrer dans le WHERE (ce qui restreint les données du résultat) et de voiloir "élargir" ce résultat par une jointure dans la même clause WHERE de filtrage.
    • La lisibilité des requêtes est plus grande en utilisant la syntaxe à base de JOIN, en isolant ce qui est du filtrage et de la jointure, mais aussi en isolant avec clarté chaque condition de jointures entre chaque couples de table.
    • L'optimisation d'exécution de la requête est souvent plus pointue du fait de l'utilisation du JOIN.
    • Lorsque l'on utilise l'ancienne syntaxe et que l'on supprime la clause WHERE a des fins de tests, le moteur SQL réalise le produit cartésiens des tables ce qui revient la plupart du temps à mettre à genoux le serveur !
    Citation Envoyé par Luc Orient
    J'ajouterais que pour une jointure interne, la sémantique et les accès sont strictements identiques. Donc à mon avis, cette question est un point de détail et ne mérite vraiment pas qu'on en fasse tout un plat ...
    Encore une fois je ne parle que des jointures internes ... les autres types de jointure ne peuvent s'exprimer que par la clause JOIN et là il n'y a plus matière à débat ...
    Je ne suis pas sûr de bien comprendre ? Par exemple, les jointures externes peuvent tout à fait s'écrire dans le WHERE, sinon Oracle 8 ne serait pas capable de les gérer .
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  11. #11
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par Xo
    ...
    Je ne suis pas sûr de bien comprendre ? Par exemple, les jointures externes peuvent tout à fait s'écrire dans le WHERE, sinon Oracle 8 ne serait pas capable de les gérer .
    Je connais pas Oracle ... On fait comment alors ?

  12. #12
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Dans le cours précédement cité sur les jointures, tu as les "anciennes" syntaxes pour les SGBD ne supportant pas JOIN

    2.4.2. Mécanisme en jeu

    D'anciennes syntaxes permettent de faire des jointures externes unilatérale. Par exemple, il n'est pas rare de rencontrer les syntaxes suivantes :
    SELECT colonnes
    FROM table_1 t1, table_2 t2
    WHERE t1.id1 *= t2.id2
    ou encore

    SELECT colonnes
    FROM table_1 t1, table_2 t2
    WHERE t1.id1 (+)= t2.id2
    Elles sont bien évidemment à proscrire si la syntaxe SQL 2 est disponible !
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  13. #13
    Nouveau membre du Club
    Inscrit en
    Février 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 31
    Points : 37
    Points
    37
    Par défaut
    J'ai appris à programmer une base de donnée grace à ce site du coup j'utilise Join souvent. Merci à developpez.com.

  14. #14
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par Xo
    Dans le cours précédement cité sur les jointures, tu as les "anciennes" syntaxes pour les SGBD ne supportant pas JOIN

    2.4.2. Mécanisme en jeu
    J'ignorais complètement cette syntaxe ... C'est vrai qu'elle est loin d'être standard ...
    Le SGBD que j'utilise (DB2 for z/OS) n'a accepté le JOIN qu'à partir de la V4 (actuellement il est en V8) et avant il n'y avait pas de moyen simple d'obtenir l'équivalent des jointures externes ...

  15. #15
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    J'ai appris à utiliser JOIN dans les requêtes SQL access.
    En suivant une formation au CNAM cette année, j'ai utilisé les liaisons dans la clause WHERE.
    J'utilise exclusivement JOIN dans mes bases Access.

  16. #16
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par Kikof
    Salut,
    ...
    En suivant une formation au CNAM cette année, j'ai utilisé les liaisons dans la clause WHERE.
    ...
    Cela voudrait dire que le cours du CNAM n'est pas à niveau ?

  17. #17
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    En fait, le support de cours est intitulé "SQL 92" enfin un truc du genre. Donc Le SQL normalisé si je ne m'abuse.
    On a beaucoup utilisé les jointures dans le where (ce qui m'a un peu déstabilisé au début). Mais si mes souvenirs sont bons (alzheimer frappe à n'importe quel age), le JOIN était abordé. Il faudrait que je confirme ça. (j'ai mon cours à la maison donc ce sera pour demain.)

  18. #18
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Pour moi un bon cours SQL sur les jointures devrait être du style :

    "Je vous présente la norme en décrivant le JOIN et les différents types de jointure (INNER, OUTER, etc ).
    Mais sachez, qu'il existe une autre syntaxe (le WHERE), en expliquant le pourquoi de cette double écriture, et que, au cours de votre vie professionnelle vous risquez d'y être confrontée, alors autant la connaître et la maîtriser ..."

    Ensuite, passer en revue les différents SGBD en indiquant leur situation vis à vis de cette problématique ... Mais là ça nécessite une connaissance quasi encyclopédique ...

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 93
    Points : 61
    Points
    61
    Par défaut
    ah bein, c'est justement la question que je me posais.

    Solution : join the join community. Better, faster, cheaper

  20. #20
    Membre habitué
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Points : 151
    Points
    151
    Par défaut
    Salut
    J'ai toujours utilisé JOIN :
    • normalisé
    • lisible
    • performant : plus apte à être optimisé( par l'optimiseur )

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/04/2015, 16h44
  2. Est-ce qu'une jointure avec JOIN est plus rapide que via le WHERE ?
    Par clavier12AZQSWX dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 13/01/2014, 16h31
  3. Probléme de jointure dans une requete avec UNION
    Par MissOleana dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/11/2013, 15h45
  4. [AC-2007] Problème de jointure dans INSERT INTO avec INNER JOIN
    Par andy331 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 16/03/2010, 15h59
  5. INNER JOIN ... ON ... ou jointure dans clause where
    Par schmur1 dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 28/06/2005, 09h16

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