Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1712 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Troll] Join SQL traditionnel ou ANSI ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Troll] Join SQL traditionnel ou ANSI ?

n°1876071
Piksou
Posté le 21-04-2009 à 23:59:06  profilanswer
 

Le grand débat du jour au taf: qu'est qui est bien et qu'est ce qui est mal entre:

Code :
  1. select *
  2. from x inner join y on x.id = y.id


et

Code :
  1. select * from x,y
  2. where x.id = y.id


 
et surtout pourquoi :o
 
A titre perso je pense que le 1 est nettement mieux parce que:
- ça clarifie la notion de join: le where est uniquement pour mes filtres, pas pour les conneries de join
- si le mot join est là ya une raison. c'est comme remplacer le for du C par while + if/then. ça marche pareil, mais pourquoi ne pas utiliser mlot-clef fait pour ?
 
On m'a objecté:
- c'est plus compact
- (un peu de mauvaise foi assumée je pense) la méthode 1 est celle de ceux qui font des left join à tort et à travers sans rien comprendre, la 2 est donc la méthode des "vrais"
 
Voilà, vous faites quoi, vous ?


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
mood
Publicité
Posté le 21-04-2009 à 23:59:06  profilanswer
 

n°1876079
billgatesa​nonym
Posté le 22-04-2009 à 00:20:37  profilanswer
 

Je préfère la deuxième solution, parce que je la trouve beaucoup plus lisible et compréhensible, surtout quand les jointures sont plus compliqué que dans le cas ultra simple qui est présenté ici. L'un des avantages parmi d'autres est de trouver tout de suite les tables concernées derière le mot From, au lieu de chercher les noms des tables éparpillés au milieu de plein de blabla. Mais il y a beaucoup de programmeurs qui aiment le blabla. Ce n'est pas mon cas. La deuxième forme est directe, simple, lisible. Elle me convient mille fois mieux que la première.

n°1876156
casimimir
Posté le 22-04-2009 à 10:35:59  profilanswer
 

j'avais commencé par la méthode 2, et des gens m'avaient expliqué que c'était super le (+) d'oracle tout ca, mais depuis 1 an je suis complètement passé en ansi.
Personnellement je trouve la déclaration avec join beaucoup plus lisible, dès qu'on croise une dizaine de table et qu'on ajoute des filtres cela devient le bordel complet en mettant tout dans le where, et je dois être débile mais je mets 5x plus de temps a comprendre une requête ou tout se trouve dans le where.
 
L'histoire du compact on s'en fout, on est pas payés au caractère en moins, ce qu'on veut c'est un code lisible que l'on puisse maintenir.
 
Pour le coup du left join c'est débile aussi, on fait un left join si on en a besoin et c'est très souvent utile, et oracle permet d'en faire dans les deux modes d'écriture, d'autre part si l'on doit parler de join foireux, c'est très facile de faire un cross join parce qu'on a oublié de lier deux tables dans le where dans une requête complexe, alors que avec la méthode ansi on aura une syntax erroret l'idée me plait bien.

n°1876172
LeRiton
Posté le 22-04-2009 à 10:51:05  profilanswer
 

Les slides Join-Fu expliquent ça très bien dans la partie "ANSI vs. Theta SQL coding style".

n°1876403
Piksou
Posté le 22-04-2009 à 18:39:13  profilanswer
 

Intéressantes ces slides :jap:


---------------
« Le verbe "aimer" est le plus compliqué de la langue. Son passé n'est jamais simple, son présent n'est qu'imparfait et son futur toujours conditionnel. » Jean Cocteau
n°1876676
xasyl
Posté le 23-04-2009 à 11:07:50  profilanswer
 

Sans être DBA, j'ai une préférence pour la méthode 1 (ANSI) ...

n°1877317
robbyone
Non pas !
Posté le 24-04-2009 à 12:37:34  profilanswer
 

Ni bien, ni mal, c'est pareil, juste une question de lisibilité de la requête. De toute manière le planificateur va la reformuler à sa sauce et le résultat sera le même niveau performance.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Troll] Join SQL traditionnel ou ANSI ?

 

Sujets relatifs
execution d'un .SQL dans un .BATOrdonner un calcul de requetes SQL
Problème SQLSQL Server Reporting Services - Ecrire dans une base de données
problème trigger SQL SERVER 2005Calcul du hash d'une table automatisé en SQL
[SQL] Bdd avec LEFT JOIN, tri sur deux champs[SQL Server 2005] Execute, droit refusée
SQL SERVER: Retourner la 2ème ligne... 
Plus de sujets relatifs à : [Troll] Join SQL traditionnel ou ANSI ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR