Exploiter une base relationnelle

15 minutes de SQL

Croiser deux tables avec INNER JOIN

Thème : Exploiter une base relationnelle

Niveau : ECG2

Année : Maths appliquées

Objectif : Savoir faire une jointure INNER JOIN pour relier deux tables via une clé étrangère, et écrire clairement la condition ON.

Pourquoi une jointure ?

Quand l’information est répartie dans plusieurs tables (normalisation), on a besoin de « recoller » les données pour répondre à une question.

La jointure demandée au programme est :

FROM A INNER JOIN B ON condition

Exemple

Tables :

  • ETUDIANTS(id, nom, classe)
  • NOTES(id, id_etudiant, matiere, note)

On relie NOTES à ETUDIANTS par NOTES.id_etudiant = ETUDIANTS.id.

Exemples commentés

Exemple 1

On veut associer chaque commande au client correspondant. La jointure se fait sur l’égalité des identifiants.

clients(id_client, nom, ville) et commandes(id_commande, id_client, date_commande)

SELECT c.nom, c.ville, co.id_commande, co.date_commande
FROM clients c
INNER JOIN commandes co ON c.id_client = co.id_client;
Exemple 2

On veut afficher, pour chaque employé, le nom du service dans lequel il travaille.

employes(..., id_service) et services(id_service, nom_service, ville)

SELECT e.nom, s.nom_service, s.ville
FROM employes e
INNER JOIN services s ON e.id_service = s.id_service;
Exemple 3

On relie trois tables pour afficher, pour chaque invitation, le nom de la personne et le nom de l’événement.

personnes, invitation, evenements

SELECT p.nom, e.nomevenement, i.datedenvoi
FROM personnes p
INNER JOIN invitation i ON p.idpers = i.idpers
INNER JOIN evenements e ON e.idevenement = i.idevenement;
Exemple 4

On veut afficher les locations avec, en plus, le modèle de la voiture et le nom du client.

location(id_loc, voiture, client, date_debut, date_fin)

SELECT l.id_loc, v.marque, v.modele, c.nom, c.prenom, l.date_debut, l.date_fin
FROM location l
INNER JOIN voiture v ON l.voiture = v.id_voiture
INNER JOIN client c ON l.client = c.id_client;
Exemple 5

Dans « Biblio / Clients / Ventes », on veut afficher, pour chaque vente, le nom du client et le titre du livre acheté.

Ventes(..., id_client, achat) avec Clients(id_client,...) et livres(ISBN,...)

SELECT cl.nom, cl.prenom, b.Titre, v.date_vente
FROM Ventes v
INNER JOIN Clients cl ON v.id_client = cl.id_client
INNER JOIN Biblio b ON v.achat = b.ISBN;

Accès restreint. Les exercices interactifs et le feedback IA sont réservés aux membres.

Et pour quelques minutes de plus…

Niveau 1 Lire et interpréter

Niveau 2 Compléter une requête

Niveau 3 Écrire une requête

error: Ce contenu est protégé !