« On peut aller jusqu’à dire que l’utilisation de la paire (FROM, WHERE) pour exprimer la jointure peut être considérée comme obsolète depuis 25 ans. En effet, c’est dans son ouvrage
Relational Databases, Selected Writings, paru en 1986 que C. J. Date écrivit (chapitre 16,
Outer join) :
[...]We propose the introduction of an explicit JOIN operation into SQL —where the keyword JOIN refers specifically to the (inner or outer) natural join [...]
et il fournit la BNF qui va bien :
1 2 3 4
| join-expression
::= [ OUTER | INNER ] JOIN relation-commalist on-clause
on-clause
::= ON ( attribute-commalist ) [ AS introduced-name ] |
Dans
Relational Databases, Writings 1989-1991, paru en 1992, C. J. Date écrivit par ailleurs (au chapitre 19,
Watch Out for Outer join, initialement publié dans
InfoDB 5, No. 1 (Spring/Summer 1990)) :
I am glad to see that the SQL standards committees are in fact planning such an extension in their proposed follow-on to the existing SQL standard known as SQL2.
Cela dit, les éditeurs de SGBD ont pris plus ou moins leur temps avant de proposer d’effectuer la jointure au niveau du seul FROM, sans que l’on ait à fournir la condition de jointure au sein du WHERE. Par exemple, IBM n’a proposé la construction INNER JOIN qu’en novembre 1995, avec la version 4 de DB2 for MVS/ESA (autant dire en 1998 pour nous, pauvres utilisateurs, toujours en retard d’une version, contexte de production, plans de tests, de régression, etc. obligent). A la décharge d’IBM, la V3 de DB2 avait été livrée en 1993, et il n’était évidemment pas possible de la chambouler, d’envoyer au pilon des wagons de documentation prêts depuis un an, tout cela parce que simultanément naquit SQL/2.
Quant à ORACLE... Si j’ai bien suivi les pointeurs (merci de me corriger si j’ai lu de travers), ça n’est qu’avec Oracle10g Release 2 que l’on a pu coder JOIN pour effectuer une
jointure naturelle, c'est-à-dire en 2006. Là encore, avec une version de retard, les développeurs ont des excuses...
Quant à MySQL... Je suis incompétent pour répondre, mais vu sa date de naissance (1995 si j’en crois Wikipedia), il a probablement dû prendre en compte la norme dès le départ.
En ce qui concerne SQL Server, SQLpro sera sans doute à même de nous donner les informations correspondantes. »
Etc.
Partager