15 minutes de SQL
Croiser deux tables avec INNER JOIN
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
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;
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;
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;
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;
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.
On veut associer chaque commande au client correspondant. La jointure se fait sur l’égalité des identifiants.
clients(id_client, nom, ville)etcommandes(id_commande, id_client, date_commande)