Verbind tabellen in plaats van gegevens te herhalen · oefening
Vind de actieve uitleningen
Het activiteitenrapport bevat momenteel uitlening 502, waarvan returned_on de waarde 2026-08-03 heeft. Die rij is nuttige geschiedenis, maar geen huidige uitlening. Actieve uitleningen zijn de rijen waarvoor nog geen retourwaarde is vastgelegd.
Open report.sql en voeg dit filter toe vóór ORDER BY:
WHERE loans.returned_on IS NULL
Druk op Run. Uitleningen 501 en 503 horen te blijven staan, terwijl 502 verdwijnt.
NULL betekent geen waarde. Het is geen lege string, nul of het woord NULL. SQL heeft er daarom een specifieke test voor: IS NULL. De voorwaarde is alleen waar bij een ontbrekende waarde.
Het kan verleidelijk zijn om dit te schrijven:
WHERE loans.returned_on = NULL
Die vergelijking betekent niet “beide kanten ontbreken.” Een gewone gelijkheidsvergelijking heeft twee bekende waarden nodig. Wanneer één kant onbekend is, kan SQL niet zeggen dat ze gelijk zijn, dus komt de rij niet door het filter. Gebruik IS NULL wanneer het juist om afwezigheid gaat.
De geselecteerde kolom returned_on mag in het resultaat blijven staan. Elke overgebleven rij toont NULL, waardoor de regel voor actieve rijen zichtbaar is in het rapport:
501 | MB-017 | Riley | IT-100 | Cordless drill | 2026-08-18 | NULL
503 | MB-028 | Sam | IT-300 | Projector | 2026-08-20 | NULL
Submit mengt ontbrekende waarden met verschillende aanwezige tekstwaarden, waaronder één die leeg lijkt. De query moet de SQL-test voor ontbrekende waarden gebruiken, geen Python-truthiness of gok over de datumtekst. Hier worden datums als tekstlabels opgeslagen; alleen de aan- of afwezigheid van returned_on is van belang.
Je hebt nu een precies rapport van actieve uitleningen. Draai het gezichtspunt even om: hoe kan een rapport elk voorwerp behouden, ook voorwerpen zonder actieve uitlening om aan te koppelen?
Opdracht
Voeg één WHERE-voorwaarde toe aan report.sql, zodat het alleen uitleningen teruggeeft waarvan de waarde van returned_on ontbreekt. Laat de joins, geselecteerde kolommen en volgorde op uitleen-ID ongewijzigd.