Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen
Een voorwaarde gebruiken Mens Hoeveel geld heeft het tweewielercentrum per contract ontvangen na 1 februari 1992? Sorteer het resultaat op het bedrag. Database SELECT contractnummer, SUM(betaald_bedrag) FROM T_betaling WHERE betaaldatum > 19990201 GROUP BY contractnummer ORDER BY SUM(betaald_bedrag) ASC
Resultaat contractnummer SUM(betaald_bedrag) 8 12.5 10 3 13.0 9 18.0 ...
Een voorwaarde gebruiken Mens Bij welke contracten is er in totaal tot nu toe minder dan 50 euro betaald? Sorteer het resultaat op het bedrag. Database SELECT contractnummer, SUM(betaald_bedrag) FROM T_betaling WHERE SUM(betaald_bedrag) < 50 GROUP BY contractnummer ORDER BY SUM(betaald_bedrag) ASC Hoe dan wel?
Een voorwaarde gebruiken Mens Bij welke contracten is er in totaal tot nu toe minder dan 50 euro betaald? Sorteer het resultaat op het bedrag. Database SELECT contractnummer, SUM(betaald_bedrag) FROM T_betaling GROUP BY contractnummer HAVING SUM(betaald_bedrag) < 50 ORDER BY SUM(betaald_bedrag) ASC
Resultaat contractnummer SUM(betaald_bedrag) 10 16.0 9 24.0 6 41.25
Wat houdt het in? SELECT contractnummer, SUM(betaald_bedrag) FROM T_betaling GROUP BY contractnummer HAVING SUM(betaald_bedrag) < 50 ORDER BY SUM(betaald_bedrag) ASC HAVING SUM(betaald_bedrag) < 50 Een voorwaarde die je stelt aan een groep contractnummers Is hetzelfde als WHERE, maar dan voor groepen
Belangrijke regels Een functie (zoals SUM en COUNT) mag voorkomen na het woord SELECT en móet voorkomen na het woord HAVING. Een functie mag nooit voorkomen na het woord WHERE (en dus ook niet na de bij de WHERE behorende AND en OR)
Tabellen combineren Mens Database Geef bij elk contract een overzicht van alle gegevens van dat contract. Database SELECT * FROM T_betaling, T_contract WHERE T_betaling.contractnummer = T_contract.contractnummer
Resultaat
Wat houdt het in? SELECT * FROM T_betaling, T_contract WHERE T_betaling.contractnummer = T_contract.contractnummer SELECT * Selecteer alle kolommen FROM T_betaling, T_contract van zowel T_betaling als T_contract WHERE T_betaling.contractnummer = T_contract.contractnummer maar alleen de rijen waarvan de contractnummers van beide tabellen aan elkaar gelijk zijn, worden gekoppeld.
Oftewel:
Oftewel:
Oftewel:
Korter noteren Mens Database Geef bij elk contract een overzicht van alle gegevens van dat contract Database SELECT * FROM T_betaling AS b, T_contract AS c WHERE b.contractnummer = c.contractnummer
Resultaat
Wat houdt het in? SELECT * FROM T_betaling b, T_contract c WHERE b.contractnummer = c.contractnummer FROM T_betaling AS b, T_contract AS c geef T_betaling het pseudoniem b en T_contract het pseudoniem c WHERE b.contractnummer = c.contractnummer je kunt dan hier het kortere pseudoniem gebruiken