0%

Hoofdstuk 3 · oefening

Stel precieze vragen

Selecteer meer dan één kolom

De uitleencatalogus kan de vraag “Wat zijn de namen van de voorwerpen?” al beantwoorden met SELECT name FROM items;. Een bruikbaar zoekresultaat heeft meestal meer context nodig. Als iemand Projector ziet, zijn misschien ook de inventariscode, categorie en gebruikelijke uitleentermijn nodig om te bepalen of het om het juiste voorwerp gaat.

Open search.sql. Behoud FROM items, maar vervang de enkele naam na SELECT door deze vier namen:

SELECT asset_tag, name, category, loan_days
FROM items;

De komma’s scheiden de gevraagde kolommen. Hun volgorde van links naar rechts is van belang, omdat SQLite dezelfde volgorde in het resultaat gebruikt. Hier komt de code eerst, gevolgd door de naam van het voorwerp, de categorie en de uitleentermijn.

Druk op Run. De eerste regels horen er zo uit te zien:

== search.sql ==
Columns: asset_tag | name | category | loan_days
EV-101 | Folding table | events | 7

Het project bevat ook run_queries.py. Je hoeft dat bestand niet te bewerken. Elke keer dat je op Run drukt, maakt het een nieuwe catalogus met zes voorwerpen, voert het de aanwezige oefenbestanden uit en drukt het de antwoorden van SQLite af. De database verdwijnt na het uitvoeren, terwijl je SQL-bestanden in het project blijven staan.

Deze specifieke catalogus drukt alle zes de voorwerpen in volgorde van ID af, maar je query heeft nog niet om een volgorde gevraagd. Bekijk voorlopig de koppen en waarden zonder de zichtbare rijvolgorde als een belofte te beschouwen.

Wanneer je op Submit drukt, wordt je query op een andere catalogus uitgevoerd. Hij moet elke opgeslagen rij lezen in plaats van de zes zichtbare antwoorden letterlijk uit te schrijven. Hij moet ook de vier genoemde kolommen opvragen in plaats van * te gebruiken, want bewust het resultaat kiezen is de vaardigheid die je oefent.

Als je terug wilt naar de beginbestanden, gebruik je Reset project. Daarmee herstel je run_queries.py; wanneer je hier terugkomt, wordt de beginversie van search.sql toegevoegd als die ontbreekt.

Je begon met alleen een naam. Je nieuwe resultaat zet elke naam naast de details die hem bruikbaar maken, en jij hebt precies bepaald hoe die details naast elkaar staan.

Opdracht

Geef in search.sql de kolommen asset_tag, name, category en loan_days uit items terug, in die volgorde. Behoud elk opgeslagen voorwerp in het resultaat.

Voer de query uit en controleer de vier koppen. Stuur hem daarna in om hem met een andere catalogus te laten uitvoeren.