Verbind tabellen in plaats van gegevens te herhalen · oefening
Volg een uitlening naar het bijbehorende lid
Een uitleenrij identificeert Riley als lid 17, maar een bruikbaar rapport moet MB-017 en Riley tonen in plaats van de lezer dat ID met de hand te laten opzoeken.
Open report.sql. De huidige query begint bij loans en toont member_id. We hebben voor elke uitlening één rij uit members nodig. Dit zijn de waarden die bij elkaar horen:
loans.member_id | members.id | members.member_code | members.name |
|---|---|---|---|
17 | 17 | MB-017 | Riley |
Voeg deze regel toe na FROM loans:
INNER JOIN members ON members.id = loans.member_id
Een inner join behoudt rijen waarvoor de ON-vergelijking aan beide kanten een overeenkomst vindt. De vergelijking gebruikt de relatie die je al hebt vastgelegd. Ze vergelijkt niet het eigen ID van de uitlening of het voorwerp-ID.
Vervang daarna loans.member_id in de geselecteerde kolommen door:
members.member_code,
members.name AS member_name,
De tabelnamen kwalificeren elke kolom en maken zo de bron expliciet. De alias geeft de tweede name een bruikbare resultaatkop. Behoud loans.id AS loan_id, de twee datumkolommen en ORDER BY loans.id.
Druk op Run. Het onderdeel report.sql hoort zo te beginnen:
loan_id | member_code | member_name | checked_out_on | returned_on
501 | MB-017 | Riley | 2026-08-18 | NULL
Alle drie de zichtbare uitleningen hebben bijbehorende leden, dus blijven ze alle drie in dit inner-joinrapport staan. Submit gebruikt ID’s die niet toevallig op elkaar lijken en geeft twee leden dezelfde getoonde naam. Zo bepaalt de relatie het resultaat, niet een toevallig passend getal of passende naam.
Deze query volgt één duidelijk pad: begin met een uitlening, koppel haar member_id aan members.id en selecteer de ledengegevens uit die gekoppelde rij. Nu kun je ook de andere relatie van de uitlening volgen.
Opdracht
Bewerk report.sql zodat elke uitlening loans.member_id naar members.id volgt met een INNER JOIN. Geef loan_id, member_code, member_name, checked_out_on en returned_on terug, geordend op uitleen-ID.