Outils du site

Il y a des fanatiques de sang-froid: ce sont les juges qui condamnent la mort ceux qui n'ont d'autre crime que de ne pas penser comme eux; et ces juges-là sont d'autant plus coupables, d'autant plus dignes de l'exécration du genre humain, que, n'étant pas dans un accés de fureur comme les Clément, les Chastel, les Ravaillac, les Damiens, il semble qu'ils pourraient écouter la raison. [Voltaire]

60-database:sql

Ceci est une ancienne révision du document !


SQL

Jointures

Soit deux tables A et B :

CasExemple
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 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 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

https://sql.sh/2401-sql-join-infographie

Group by ... Having

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 
Dernière modification : 2019/04/28 19:40