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. #21
    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 inoussa
    Salut
    J'ai toujours utilisé JOIN :
    • normalisé
    Oui, on est tous d'accord ...

    • lisible
    Il semble qu'il y ait une majorité pour le penser ... Encore que la notion de lisibilité soit assez subjective non ?

    • performant : plus apte à être optimisé( par l'optimiseur )
    Je veux bien le croire, mais un exemple où l'optimiseur choisit un chemin d'accès moins performant avec une jointure écrite avec WHERE plutôt qu'avec JOIN serait le bienvenu je trouve ... En précisant le SGBD bien sûr ...

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 35
    Points : 69
    Points
    69
    Par défaut
    Pour ma part je fais partie de ceux : Je n'ai pas envie de me mettre à niveau, j'utilise toujours le clause where. (J'aurrais cru qu'on serait plus seulement 5 jusqu'à maintenant)

    Ça fait 9 ans que je fais du SQL avec Oracle et aussi à l'occasion avec DB2 sur mainframe ou As/400. J'utilise toujours la clause Where pour faire mes jointures. Le truc pour que ce soit lisible c'est de toujours commencer par les jointures, juste une question d'habitude.

    Deux nouveaux sont rentrés récemment, tout frais sortie du collège. Ceux-ci utilisait la nouvelle monenclature pour les jointures. Dès que tu dépasses les 5 tables, je trouves la syntaxe plus difficile surtout quand tu intéreoges un datamart (comptoir de données) modèlisé en snowflake (flocon de neige). Je crois qu'ici aussi c'est une question d'habitude.

    Rémi

  3. #23
    Membre actif Avatar de f_bobo
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Points : 281
    Points
    281
    Par défaut
    Salut à toutes et tous

    Petite question en passant, l'utilisation du join à la "place" d'un where, ce n'est que dans le cas d'un select ou c'est pareil pour un update d'une table à partir de donnée d'une autre ?

  4. #24
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par f_bobo
    l'utilisation du join à la "place" d'un where, ce n'est que dans le cas d'un select ou c'est pareil pour un update d'une table à partir de donnée d'une autre ?
    Vous parlez de la syntaxe hors norme qui permet de spécifier plus d'une table dans la clause UPDATE (remarque : je n'utilise jamais cette syntaxe mais certains utilisateurs du forum m'ont indiqué que leur SGBD leur permettait) ?

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE MyTable1, MyTable2
    ...

  5. #25
    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 Magnus
    Vous parlez de la syntaxe hors norme qui permet de spécifier plus d'une table dans la clause UPDATE (remarque : je n'utilise jamais cette syntaxe mais certains utilisateurs du forum m'ont indiqué que leur SGBD leur permettait) ?

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE MyTable1, MyTable2
    ...
    Oui c'est très étrange je trouve ... cf :
    utilisation de deux jointures
    A partir du post # 11

  6. #26
    Membre actif Avatar de Chen norris
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 216
    Points : 248
    Points
    248
    Par défaut
    J'ai appris le JOIN à l'IUT, mais à l'époque, je trouvais le WHERE plus simple. Mais je me suis rapidement rendu compte qu'avec le WHERE, il y avait un certains nombre de risques :
    • Un oubli est vite arrivé, sans que l'on s'en rende compte.
    • On peut confondre entre des clauses de jointures et des clauses de sélection.
    • La requête n'est pas forcément optimisée de la façon que le programmeur souhaite optimiser.


    Pourtant, il y a quelques mois, en stage, l'admin où j'étais m'a demandé de changer ma requête avec des JOIN en requête avec des WHERE. Le problème, c'est que j'avais des RIGHT JOIN (certains champs étaient facultatifs pour 2-3 tables). J'ai dû utiliser des JOIN malgré tout.

  7. #27
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Je sens que je vais me faire huer mais je trouve le WHERE beaucoup plus lisible, tout est question d'indentation. Dès que l'on commence à avoir plus de 5 tables dans la requête la syntaxe en JOIN devient difficilement lisible ... mais c'est certainement une question d'habitude.

    Ceci dit, pour aller dans votre sens et étant donné que Oracle accueil les requêtes en JOIN à bras ouverts depuis un certain temps, je fais quelques efforts pour essayer de me "normaliser" (sur les nouveaux projets, pour ce qui est maintenance des anciennes applis je préfère rester homogène et continuer avec la norme utilisée dans le reste du code).

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Tout est question d'indentation, les jointures avec join peuvent très bien être indentées correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ...
      FROM Table1 INNER JOIN Table2 ON Champ1_1 = Champ2_1
                  INNER JOIN Table3 ON Champ2_3 = Champ3_1
                  INNER JOIN Table4 ON Champ3_4 = Champ4_1
     WHERE Champ2_3 = blabla
       AND Champ4_7 = ...
    Pour ceux qui ont besoin d'aide pour mettre leurs requête en forme :
    http://www.developpez.net/forums/sho...58&postcount=4

  9. #29
    Membre confirmé Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Points : 481
    Points
    481
    Par défaut
    Bah oui je ne dis pas le contraire, c'est une question d'habitude.
    Au premier coup d'oeil, il me faut simplement plus de temps pour comprendre ta requête que si elle était écrite avec l'autre syntaxe. Sur une seule requête ça n'a pas d'importance, mais quand il y en a des pleines pages je perds un peu de temps.

  10. #30
    Membre actif Avatar de f_bobo
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mai 2006
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 202
    Points : 281
    Points
    281
    Par défaut
    Citation Envoyé par Magnus
    Vous parlez de la syntaxe hors norme qui permet de spécifier plus d'une table dans la clause UPDATE (remarque : je n'utilise jamais cette syntaxe mais certains utilisateurs du forum m'ont indiqué que leur SGBD leur permettait) ?

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE MyTable1, MyTable2
    ...
    En fait non pas vraiment.
    C'est plutôt comme ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update table1 set
    champ1 = t2.champ1
    ...
    from table1 t1, table2 t2
    where t1.x = t2.x etc...

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