SQL Basis

Hoofdstuk 3 - Sorteren

  • SQL statements worden opgebouwd uit Clauses (clausules)
  • Sommige clausules zijn verplicht andere optioneel
  • Een clausule bestaat doorgaans uit een 'keyword' en een bijbehorende waarde
  • Een voorbeeld hiervan is het SELECT statement; met zijn FROM clausule (verplicht)
  • ORDER BY is ook een clausule van het SELECT statement (niet verplicht)
  • Het sorteert het resultaat
  • ORDER BY is de laatste clausule van het SELECT statement (TOP/LIMIT/FETCH uitgezonderd)
  • Sorteren mag ook op een kolom die niet in het resultaat van de SELECT voorkomt
SELECT   <kolom>
FROM     <tabel>
ORDER BY <kolom>	

Selecteer uit de tabel Products de productnamen en sorteer deze (9)

-- Oracle / MySQL / SQL Server
SELECT   prod_name
FROM     Products
ORDER BY prod_name;
prod_name
12 inch teddy bear
18 inch teddy bear
8 inch teddy bear
Bird bean bag toy
Fish bean bag toy
King doll
Queen doll
Rabbit bean bag toy
Raggedy Ann
SELECT   <kolom1>,
         <kolom2>,
         <kolom3>
FROM     <tabel>
ORDER BY <kolom1>,
         <kolom2>;

Selecteer uit de tabel Products het product id, prijs en naam en sorteer op prijs en naam

	-- Oracle / MySQL / SQL Server
SELECT   prod_id,
         prod_price,
         prod_name
FROM     Products
ORDER BY prod_price,
         prod_name;
prod_idprod_priceprod_name
BNBG023.49Bird bean bag toy
BNBG013.49Fish bean bag toy
BNBG033.49Rabbit bean bag toy
RGAN014.99Raggedy Ann
BR015.998 inch teddy bear
BR028.9912 inch teddy bear
RYL019.49King doll
RYL029.49Queen doll
BR0311.9918 inch teddy bear

De sortering vindt eerst plaats op prijs en dan op naam. Als elke prijs uniek is wordt er niet op naam gesorteerd

  • Door 1 of meerdere nummers op te geven bij de ORDER BY kun je sorteren op het kolomnummer uit het SELECT statement
  • Deze nummering kun je niet toepassen op kolommen die je niet in de SELECT hebt staan
SELECT	 <kolom1>,
         <kolom2>,
         <kolom3>
FROM     <tabel>
ORDER BY 1, 3;

Selecteer uit de tabel Products het product id, prijs en naam en sorteer op kolomnummer 2 en 3

-- Oracle / MySQL / SQL Server
SELECT	 prod_id,
         prod_price,
         prod_name
FROM     Products
ORDER BY 2,3;
prod_idprod_priceprod_name
BNBG023.49Bird bean bag toy
BNBG013.49Fish bean bag toy
BNBG033.49Rabbit bean bag toy
RGAN014.99Raggedy Ann
BR015.998 inch teddy bear
BR028.9912 inch teddy bear
RYL019.49King doll
RYL029.49Queen doll
BR0311.9918 inch teddy bear

Pas op voor het wijzigen van de kolomen in het SELECT statement

  • Bij een ORDER BY wordt er standaard gesorteerd van A tot Z (Ascending)
  • Om van Z naar A te ordenen moet het keyword DESC (Descending) worden toegevoegd
SELECT   <kolom1>,
         <kolom2>,
         <kolom3>
FROM     <tabel>
ORDER BY <kolom1> DESC,
         <kolom2>;

Selecteer uit de tabel Products het product id, prijs en naam en sorteer aflopend op prijs en naam

-- Oracle / MySQL / SQL Server
SELECT	  prod_id,
          prod_price,
          prod_name
FROM      Products
ORDER BY  prod_price DESC,
          prod_name DESC;
prod_idprod_priceprod_name
BR0311.9918 inch teddy bear
RYL029.49Queen doll
RYL019.49King doll
BR028.9912 inch teddy bear
BR015.998 inch teddy bear
RGAN014.99Raggedy Ann
BNBG033.49Rabbit bean bag toy
BNBG013.49Fish bean bag toy
BNBG023.49Bird bean bag toy

Als de prijs & de naam aflopend moeten zijn moet DESC 2 x opgegeven worden

Of bij het sorteren de A hetzelfde is als de a hangt af van de database en het gebruikte DBMS

Vraag SQL
1 - Wat wil ik zien? SELECT
2 - Waar haal ik het vandaan? FROM
3 - Waar wil ik op sorteren? ORDER BY
  1. Selecteer uit de tabel Customers de cust_name en sorteer op cust_name (5)


  1. Selecteer alles uit OrderItems en sorteer op order_num en op item_price (18)


  1. Selecteer alles uit OrderItems en sorteer aflopend op quantity (18)


  1. Selecteer uit de tabel Vendors de namen en het land van de leveranciers (6)


  1. Selecteer uit de tabel OrderItems de product id en hoeveelheid en sorteer op hoeveelheid (18)