602SQL-Úplná dokumentace Index  

Sbírka dotazů – str. 14

Příklad 22

Zadání: Vyberte ty firmy, které měly faktury za více než 10000,-Kč letos (tabulka FAKTURY) i vloni (tabulka FAKT_2).

Popis řešení: Vytvoříme dva dotazy podle příkladu 18. Pak provedeme množinový průnik odpovědí - pomocí klauzule INTERSECT.

SQL:

  SELECT A.nazev
  FROM Firmy A, Faktury B 
  WHERE A.cislo=B.firma
  GROUP BY B.firma 
  HAVING 10000 < SUM(B.castka)

      INTERSECT CORRESPONDING BY (nazev)

  SELECT A.nazev
  FROM Firmy A, Fakt_2 B 
  WHERE A.cislo=B.firma
  GROUP BY B.firma
  HAVING 10000 < SUM(B.castka)

Poznámky:

a) Malou změnou lze vytvořit dotaz na firmy, které tohoto obratu dosáhly letos ale ne vloni. Stačí použít množinový rozdíl EXCEPT.

SQL:

  SELECT A.nazev
  FROM Firmy A, Faktury B 
  WHERE A.cislo=B.firma
  GROUP BY B.firma      
  HAVING 10000 < SUM(B.castka)
    
      EXCEPT CORRESPONDING BY (nazev)

  SELECT A.nazev
  FROM Firmy A, Fakt_2 B 
  WHERE A.cislo=B.firma
  GROUP BY B.firma      
  HAVING 10000 < SUM(B.castka)