{ "training": "SQL met FitWorks", "chapters": [ { "title": "Hoofdstuk 4 - Basisqueries", "pages": [ { "title": "Terugblik en opening", "blocks": [ { "type": "text", "summary": "Terugblik" }, { "type": "text", "summary": "Opening" } ] }, { "title": "Leerdoelen", "blocks": [ { "type": "text", "summary": "Leerdoelen" } ] }, { "title": "4.1 SELECT en FROM", "blocks": [ { "type": "text", "summary": "De balie vraagt, de database antwoordt" }, { "type": "image", "summary": "Anatomie van een SELECT-query" }, { "type": "text", "summary": "Alle kolommen tegelijk" }, { "type": "open-question", "summary": "Je wilt de e-mailadressen en geboortedatums van alle leden zien. Welke query schrijf je?" } ] }, { "title": "4.2 WHERE", "blocks": [ { "type": "text", "summary": "Filteren op voorwaarden" }, { "type": "text", "summary": "Vergelijkingsoperatoren" }, { "type": "image", "summary": "WHERE-operatoren" }, { "type": "text", "summary": "Logische operators" }, { "type": "text", "summary": "Tekst en getallen" }, { "type": "open-question", "summary": "Welke query schrijf je om trainers op locatie 1 te tonen die ook een specialisatie hebben opgegeven?" } ] }, { "title": "4.3 NULL", "blocks": [ { "type": "text", "summary": "Een waarde die geen waarde is" }, { "type": "text", "summary": "Waarom werkt = NULL niet" }, { "type": "text", "summary": "De juiste aanpak" }, { "type": "image", "summary": "NULL-afhandeling" }, { "type": "text", "summary": "Wat gaat er mis als je dit negeert" }, { "type": "open-question", "summary": "Schrijf de query die alle lestypes toont waarvan de beschrijving niet is ingevuld." } ] }, { "title": "4.4 ORDER BY en DISTINCT", "blocks": [ { "type": "text", "summary": "ORDER BY" }, { "type": "image", "summary": "ORDER BY en DISTINCT" }, { "type": "text", "summary": "DISTINCT" }, { "type": "open-question", "summary": "Welke query schrijf je om alle abonnementsnamen met maandprijs te tonen, gesorteerd van duurste naar goedkoopste? Wat verandert er als je DISTINCT toevoegt?" } ] }, { "title": "4.5 Kolomaliassen en literals", "blocks": [ { "type": "text", "summary": "Kolomaliassen" }, { "type": "image", "summary": "Aliassen en literals" }, { "type": "text", "summary": "Literals" }, { "type": "open-question", "summary": "Schrijf een query die de naam en maandprijs van alle abonnementen toont, met als kolomkoppen Abonnementsnaam en Maandprijs. Sorteer op prijs, laagste eerst." } ] }, { "title": "4.6 CONCAT en CAST", "blocks": [ { "type": "text", "summary": "CONCAT" }, { "type": "text", "summary": "CAST" }, { "type": "image", "summary": "CONCAT en CAST" }, { "type": "table", "summary": "Veelgebruikte CAST-conversies" }, { "type": "open-question", "summary": "Schrijf een query die de volledige naam van elke trainer toont in een kolom genaamd Trainer." } ] }, { "title": "Quiz", "blocks": [ { "type": "multiple-choice", "summary": "Je wilt alle betalingen zien met status `mislukt` of `openstaand`, gesorteerd van hoog naar laag bedrag. Welke query is correct?" }, { "type": "multiple-choice", "summary": "Welke query geeft correct alle leden terug die geen tussenvoegsel hebben?" }, { "type": "multiple-choice", "summary": "Een collega ziet met `SELECT DISTINCT specialisatie, voornaam FROM trainers;` nog steeds herhaalde waarden in `specialisatie`. Wat is de oorzaak?" } ] }, { "title": "Samenvatting en vooruitblik", "blocks": [ { "type": "text", "summary": "Samenvatting" }, { "type": "text", "summary": "Vooruitblik" } ] } ] } ] }