C'est la notation spécifique à Oracle pour une OUTER JOIN, car le format ANSI-89 (utilisant une virgule dans la clause FROM pour séparer les références de table) ne normalisait pas les jointures OUTER.
La requête serait réécrite dans la syntaxe ANSI-92 comme :
SELECT ...
FROM a
LEFT JOIN b ON b.id = a.id
Ce lien explique assez bien la différence entre les JOIN.
Il convient également de noter que même si le (+)
fonctionne, Oracle recommande de ne pas l'utiliser :
Oracle vous recommande d'utiliser le
FROM
clauseOUTER JOIN
plutôt que l'opérateur de jointure Oracle. Requêtes de jointure externe qui utilisent l'opérateur de jointure Oracle(+)
sont soumis aux règles et restrictions suivantes, qui ne s'appliquent pas auFROM
clauseOUTER JOIN
syntaxe :