Ayant travaillé récemment sur une vieille base de données Oracle 8, je me suis rendu compte que INNER JOIN n’était pas reconnu. On doit utiliser les jointures cartésiennes.
La syntaxe pour moi était nouvelle et un peu confuse dans le sens où les conditions de jointure et les conditions de sélection sont toutes rangées après le WHERE.
C’est un produit cartésien (CROSS JOIN) qui fait associer tous les lignes de la table 1 à toutes les lignes de la table 2 (donc attention beaucoup de données retournées sans lien réel)
SELECT * FROM User, WebSite WHERE User.IdWebSite = WebSite.IdWebSite AND User.IdUser = 1;
On peut aussi utiliser (+) pour faire une jointure externe, en le plaçant à l’endroit où on souhaite avoir toutes les lignes
SELECT * FROM User, WebSite WHERE User.IdWebSite = WebSite.IdWebSite (+)
On aura ici tous les Users même si aucune WebSite est associée.
Pour rappel les jointures externes sont LEFT, RIGHT et FULL et les jointures internes sont INNER.
La norme SQL2 (1992) qui permet d'utiliser INNER est implémenté à partir de la version 9 de oracle. La majorité des SGBDR utilise cette implémentation.