Votre navigateur n'est pas à jour !

Merci de mettre à jour votre navigateur pour utiliser mon blog. Mettre à jour mon navigateur maintenant

×

Base de données - Utiliser des requêtes avec CROSS JOIN

Date de publication 11 août 2015
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.
blog comments powered by Disqus