J'étais juste curieux de savoir pourquoi l'opérateur *=
pour left outer join
et les '= *' pour 'jointure externe droite ont été retirés de la norme SQL, ou, au moins, pas pris en charge par SQL Server 2005 et? J'ai lu quelques autres articles sur cet opérateur particulier et je comprends qu'il peut donner des résultats inattendus. Mais s'il était sémantiquement équivalent, je penserais que ce serait un opérateur plus facile à utiliser quand il faut joindre plusieurs tables. Si quoi que ce soit, je préfère utiliser cet opérateur pour créer dynamiquement des requêtes SQL plutôt que d'essayer d'obtenir l'ordre correct des mots comme:Qu'est-il arrivé aux * = et = * pour les jointures externes dans SQL?
FROM accounts
LEFT OUTER JOIN customers
ON accounts.accountnum = customers.accountnum
LEFT OUTER JOIN products
ON customers.accountnum = products.accountnum
AND customers.id = products.customerid
où
FROM accounts, customers, products
WHERE accounts.accountnum *= customers.accountnum AND
customers.accountnum *= products.accountnum AND
customers.id *= products.customer.id
semblerait être plus facile à analyser ensemble .
Mais revenons au monde réel, quelle était l'idée de ces opérateurs s'ils ne réalisaient pas une "vraie" jointure externe? Le terme Short Hand implique qu'il devrait faire exactement la même chose, mais pas évidement dans ce cas.
Pouvez-vous fournir une référence à leur utilisation? Je n'ai jamais entendu parler de ces opérateurs. Au strict minimum, je dirais qu'ils se sentent trop mûrs pour causer de la confusion sur d'éventuelles fautes de frappe ... –
@ X-Zero: Très commun il n'y a pas si longtemps, disons dix ans. La prise en charge de SQL-92 était limitée à ce moment-là et il existe un ** lot ** de code hérité qui utilise cette syntaxe de jointure. – Dave
Je suis assez sûr que les versions Oracle supportent cette syntaxe depuis longtemps ... – Sparky