Nous avons 5 clients. Le client 1 a passé 1 commande, le client 2 a passé 2 commandes, le client 3 a passé 3 commandes, les clients 4 et 5 n’ont pas passé de commande.
Le client 10 a passé une commande, mais n’est pas présent dans la liste des clients. Dans une base de données normalisée, ce genre de situation ne devrait pas être possible (respect de l’intégrité référentielle).
Table Client
client_id
client_id
1
1
2
2
3
3
4
4
5
5
There are no rows in this table
5
Count
Table Commandes
commande_id
client_id_commande
montant
commande_id
client_id_commande
montant
1
1
1
100
2
2
2
200
3
3
2
300
4
4
3
400
5
5
3
500
6
6
3
600
7
7
10
1000
There are no rows in this table
7
Count
Externe gauche (par défaut)
Tous les clients de la table Client, même ceux sans commande.
8 lignes : les 6 commandes dont les clients sont dans la table Client (donc pas la commande du client 10) + les 2 clients sans commande
Dans le doute, utiliser toujours cette jointure
Externe gauche
client_id
commande_id
client_id_commande
montant
client_id
commande_id
client_id_commande
montant
1
1
1
1
100
2
2
2
2
200
3
2
3
2
300
4
3
4
3
400
5
3
5
3
500
6
3
6
3
600
7
4
null
4
null
8
5
null
5
null
There are no rows in this table
8
Count
Externe droite
Toutes les commandes, même des clients qui n’existent pas dans la table Client (cliend_id 10).
7 lignes : les 7 lignes de la table Commandes
Externe droite
client_id
commande_id
client_id_commande
montant
client_id
commande_id
client_id_commande
montant
1
1
1
1
100
2
2
2
2
200
3
2
3
2
300
4
3
4
3
400
5
3
5
3
500
6
3
6
3
600
7
null
7
10
1000
There are no rows in this table
7
Count
Externe entière
Tous les clients, même s’ils n’ont pas de commande, et toutes les commandes, même si le client n’existe pas dans la table Client.
9 lignes : les 6 lignes de la table Commandes dont les clients sont dans la table Client (donc pas la commande du client 10)
+ les 2 clients sans commande
+ la commande sans client (client_id 10).
Externe entière
client_id
commande_id
client_id_commande
montant
client_id
commande_id
client_id_commande
montant
1
1
1
1
100
2
2
2
2
200
3
2
3
2
300
4
3
4
3
400
5
3
5
3
500
6
3
6
3
600
7
null
7
10
1 000
8
4
null
null
null
9
5
null
null
null
There are no rows in this table
9
Count
Interne
Les clients ayant au moins 1 commande et les commandes ayant au moins 1 client.
6 lignes : les 6 commandes dont les clients sont dans la table Client (donc pas la commande du client 10).
Interne
client_id
commande_id
client_id_commande
montant
client_id
commande_id
client_id_commande
montant
1
1
1
1
100
2
2
2
2
200
3
2
3
2
300
4
3
4
3
400
5
3
5
3
500
6
3
6
3
600
There are no rows in this table
6
Count
Gauche opposée
Seulement les clients qui n’ont pas de commande.
Permet d’isoler des cas particuliers, ici des clients sans commande.
2 lignes : les 2 clients n’ayant passé aucune commande.
Gauche opposée
client_id
commande_id
client_id_commande
montant
client_id
commande_id
client_id_commande
montant
1
4
null
null
null
2
5
null
null
null
There are no rows in this table
2
Count
Droite opposée
Seulement les commandes qui n’ont pas de client.
Permet d’isoler les non-conformités d’une table, ici de détecter les commandes sans client.
1 ligne, celle de la commande du client n’existant pas dans la table Client.