Soit deux tables A et B :
Cas | Exemple |
---|---|
INNER JOIN: intersection des A et B (Tous les A et les B qui sont en relation) | Select * FROM A INNER JOIN B on A.bID = B.id; |
LEFT (OUTER) JOIN: tous les A qu'il aient ou non un B correspondant | Select * FROM A LEFT JOIN B on A.bID = B.id; |
LEFT (OUTER) JOIN exclusif: tous les A qui n'ont pas un B correspondant | Select * FROM A LEFT JOIN B on A.bID = B.id WHERE B.id IS NULL; |
RIGHT (OUTER) JOIN: tous les B qu'il aient ou non un A correspondant | Select * FROM A RIGHT JOIN B on A.bID = B.id; |
RIGHT (OUTER) JOIN exclusif: tous les B qui n'ont pas un A correspondant | Select * FROM A RIGHT JOIN B on A.bID = B.id WHERE A.Bid is null; |
FULL (OUTER) JOIN: L'ensemble des A ET des B | Select * FROM A FULL JOIN B on A.bID = B.id; |
FULL (OUTER) JOIN sans intersection: L'ensemble des A OU (exclusif) des B | Select * FROM A FULL JOIN B on A.bID = B.id WHERE A.bID IS NULL OR B.ID IS NULL; |
Illustrations :
http://cartman34.fr/informatique/sgbd/differences-entre-inner-left-right-et-outer-join-en-sql.html
Exemple : Chaque élément de A peut être en relation avec N éléments de B
Select A.id, count(b.id) FROM A INNER JOIN B on A.bID = B.id WHERE ... GROUP BY A.id HAVING ... condition