602SQL-Úplná dokumentace Index  

Sbírka dotazů – str. 6

Příklad 11

Zadání: Vyberte ty faktury, které nejsou zaplacené

SQL:

  SELECT *
  FROM Faktury
  WHERE (Faktury.zaplaceno IS NULL)

Poznámka:

a) Operátor IS NULL se používá právě v takovýchto příkladech: vybrat ty záznamy, v nichž některý sloupec je nebo není vyplněn.

b) Pokud bychom chtěli tuto podmínku obrátit (negovat), lze použít dva ekvivalentní zápisy: WHERE (Faktury.zaplaceno IS NOT NULL) nebo WHERE NOT (Faktury.zaplaceno IS NULL).

Příklad 12

Zadání: Vytvořte dotaz, který zjistí nezaplacené faktury odběratelů a vypočítá penále k dnešnímu dni. Lhůta na zaplacení nechť je 14 dní, penále je 1% z ceny za každý den po lhůtě.

SQL:

  SELECT Faktury.castka AS ČÁSTKA,
         (Today-dat1-14) AS POČET_DNÍ,
         (Today-dat1-14)*0.01*castka AS PENÁLE,
         castka+(Today-dat1-14)*0.01*castka AS CELKEM,
         Firmy.nazev AS NÁZEV,
         Faktury.cislo AS FA_ČÍSLO
  FROM Faktury, Firmy
  WHERE Faktury.firma=Firmy.cislo
    AND (Faktury.zaplaceno IS NULL AND 
         Faktury.dat1<=Today-14 AND
         Faktury.druh=2)

Poznámky:

a) Všimněte si, že odpověď na tento dotaz se liší den ode dne - jak narůstá penále.

b) Ve výrazu v části SELECT i v podmínce WHERE lze používat některé funkce programovacího jazyka. Místo funkce jazyka Today by šlo se stejným výsledkem použít i funkci SQL CURRENT_DATE.