Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

17
Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen

Transcript of Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Page 1: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Module 7 – Hoofdstuk 5 (4)

SQL – voorwaarden aan groepen en meerdere tabellen

Page 2: 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.

• DatabaseSELECT contractnummer, SUM(betaald_bedrag)FROM T_betaling

WHERE betaaldatum > 19990201GROUP BY contractnummer

ORDER BY SUM(betaald_bedrag) ASC

Page 3: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Resultaatcontractnummer SUM(betaald_bedrag)

8 12.5

10 12.5

3 13.0

9 18.0

... ...

Page 4: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

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.

• DatabaseSELECT contractnummer, SUM(betaald_bedrag)FROM T_betaling

WHERE SUM(betaald_bedrag) < 50

GROUP BY contractnummer

ORDER BY SUM(betaald_bedrag) ASC

Hoe dan wel?

Page 5: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

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.

• DatabaseSELECT contractnummer, SUM(betaald_bedrag)FROM T_betaling

GROUP BY contractnummer

HAVING SUM(betaald_bedrag) < 50

ORDER BY SUM(betaald_bedrag) ASC

Page 6: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Resultaatcontractnummer SUM(betaald_bedrag)

10 16.0

9 24.0

6 41.25

Page 7: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

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

Page 8: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

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)

Page 9: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Tabellen combineren• Mens

Geef bij elk contract een overzicht van alle gegevensvan dat contract.

• DatabaseSELECT *

FROM T_betaling, T_contract

WHERE T_betaling.contractnummer = T_contract.contractnummer

Page 10: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Resultaat

Page 11: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

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.

Page 12: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Oftewel:

Page 13: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Oftewel:

Page 14: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Oftewel:

Page 15: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Korter noteren

• MensGeef bij elk contract een overzicht van alle gegevens van dat contract

• DatabaseSELECT *

FROM T_betaling AS b, T_contract AS c

WHERE b.contractnummer = c.contractnummer

Page 16: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

Resultaat

Page 17: Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.

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