SQL Basis

Hoofdstuk 14 - Queries Combineren

  • Een UNION kan 2 of meer SELECT statements aan elkaar koppelen
  • Het kunnen 2 SELECT statements zijn van dezelfde tabel of van verschillende tabellen
  • Het keyword UNION plaats je tussen 2 queries in
SELECT   <kolom1>,
         <kolom2>,		
         <kolom3>
FROM     <tabel1>
WHERE    <conditie1>
UNION
SELECT   <kolom1>,
         <kolom2>,		
         <kolom3>
FROM     <tabel1>
WHERE    <conditie2>;

Een UNION op 1 tabel


  • Het resultaat van een UNION op 1 tabel kan ook bereikt worden met een uitgebreide WHERE clausule
  • Wanneer het filteren in de WHERE clausule complex wordt kan een UNION vereenvoudigend werken
  • De kolomnamen bij het resultaat worden bepaald door de eerste query (mogelijk met alias)

  • Elke query in een UNION moet hetzelfde aantal kolommen hebben (of aggregaat functies)
  • Het is aan te raden om de kolommen in dezelfde volgorde te plaatsen (bij sommige DBMS-en verplicht)
  • Het datatype van bij elkaar gevoegde kolommen moeten hetzelfde of vergelijkbaar zijn

SELECT   <kolom1>,
         AVG(kolom2)
FROM     <tabel1>
WHERE    <conditie1>
GROUP BY <kolom1>
UNION
SELECT   <kolom1>,
         AVG(kolom2)
FROM     <tabel2>
WHERE    <conditie2>
GROUP BY <kolom1>;

Een UNION op 2 tabellen


  • De UNION heeft standaard een DISTINCT, Wil je dat niet gebruik dan UNION ALL
  • Er mag maar 1 ORDER BY geplaatst worden met een UNION, logischerwijs komt deze bij de laatste query
  • Met een UNION mag bij elke query een GROUP BY en een HAVING gebruikt worden

Selecteer - met een UNION - alle klantnamen, contactnamen en emailadressen van de klanten die in de staat(state) 'IL', 'IN', 'MI' zitten maar ook de klantnaam, contactnaam en emailadres van het bedrijf 'Fun4All' (4)

-- Oracle / MySQL / SQL Server
SELECT   cust_name,
         cust_contact,
         cust_email
FROM     Customers
WHERE    cust_state IN ('IL', 'IN', 'MI')
UNION
SELECT   cust_name,
         cust_contact,
         cust_email
FROM     Customers
WHERE    cust_name = 'Fun4All'; 
cust_namecust_contactcust_email
Village ToysJohn Smithsales@villagetoys.com
Fun4AllJim Jonesjjones@fun4all.com
The Toy StoreKim HowardNULL
Fun4AllDenise L. Stephensdstephens@fun4all.com
  1. Selecteer de leveranciers, productnamen en productprijzen, waarvan de prijs onder de 10,- ligt of de vend_id 'DLL01' of 'BRS01' is. Gebruik hierbij een UNION. (9)


  1. Selecteer dezelfde resultaten als de vorige vraag (vraag 61) maar dan met maar 1 SELECT statement (9)


  1. Wat is er niet goed?
SELECT   prod_name
FROM     Products
ORDER BY prod_name
UNION
SELECT   cust_name
FROM     Customers
ORDER BY cust_name;


  1. Hoe heet de meest verkochte desktop computer ooit?

    Pasen vieren we altijd de eerste zondag, na de eerste volle maan, na de lente equinox. Tijdens het paasfeest vereren we dan ook de hemellichamen 'Zon' en 'Maan'. Vandaar dat we het paasfeest vieren op de 'Zon'-dag en de 'Maan'-dag.

    Via Ostara, de godin van de lente of van de vruchtbaarheid, belanden we bij het konijn. Het konijn associƫren we vooral met vruchtbaarheid. Na een kleine stap van konijn naar haas zijn we al snel aangekomen bij de paaseieren. Want paashazen leggen paaseieren. In het Engels Easter Eggs.

    Een Easter Egg kan ook een grap of een verborgen boodschap zijn die in een computerprogramma, film of website verwerkt is. Net als 'echte' paaseieren zitten deze snufjes verborgen en moet ernaar gezocht worden. Nu je een Easter Egg hebt gevonden.... klik er op! Alle antwoorden op de vragen worden voor je zichtbaar gemaakt. Als je naar de 'welkom'-pagina gaat verlies je je Easter Egg weer.