Support formation Rapports Power BI

Les 6 types de jointure

Cf. l’exercice “sample23-Query-Join” du Kit pédagogique pour 2 exemples :

  • celui expliqué ci-dessous (Client > Commande)
  • un autre exemple, de comparaison entre 2 périodes          

Les données des exemples

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
1
2
3
4
5

Table Commandes

commande_idclient_id_commandemontant
11100
22200
32300
43400
53500
63600
7101000

Externe gauche (par défaut) (left outer)

  • 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_idcommande_idclient_id_commandemontant
111100
222200
232300
343400
353500
363600
4null4null
5null5null

Externe droite (right outer)

  • Toutes les commandes, même des clients qui n’existent pas dans la table Client (client_id 10).

7 lignes : les 7 lignes de la table Commandes

Externe droite

client_idcommande_idclient_id_commandemontant
111100
222200
232300
343400
353500
363600
null7101000

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_idcommande_idclient_id_commandemontant
111100
222200
232300
343400
353500
363600
null7101 000
4nullnullnull
5nullnullnull

Interne (Inner)

  • 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_idcommande_idclient_id_commandemontant
111100
222200
232300
343400
353500
363600

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_idcommande_idclient_id_commandemontant
4nullnullnull
5nullnullnull

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.

Droite opposée

client_idcommande_idclient_id_commandemontant
null7101 000