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

Post on 08-Jun-2015

214 views 0 download

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

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

Resultaatcontractnummer SUM(betaald_bedrag)

8 12.5

10 12.5

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.

• 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?

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

Resultaatcontractnummer 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

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

• DatabaseSELECT *

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

• 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

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