Professional Documents
Culture Documents
Chapter 9 Continued 2
Chapter 9 Continued 2
Chapter 9 Continued 2
SQL
SELECT
Voorbeeld
In Access:
Niet de Query Wizard maar Query Design gebruiken
Geef alle namen van klanten die in België of Frankrijk wonen (geef alle Belgische en
Franse klanten)
SELECT CompanyName
FROM Customers
WHERE Country = “Belgium” or Country = “France”
Geef alle klanten samen met de ordernummers en data van hun bestellingen
SELECT CompanyName, OrderID, OrderDate
FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
→ 'INNER JOIN' om een relatie aan te duiden tussen 2 tabellen
→ 'ON' = gemeenschappelijke velden aanduiden tussen die 2 tabellen
→ Customers.CustomerID = Veld CustomerID in tabel Customers
OF
SELECT CompanyName, OrderID, OrderDate
FROM Orders INNER JOIN Customers ON Customers.CustomerID = Orders.CustomerID
Geef een overzicht van alle orders samen met de producten die besteld werden
(Gegeven: OrderID, OrderDatum, ProductName, Aantal stuks besteld)
SELECT Orders.OrderID, OrderDate, ProductName, Quantity
FROM (Orders INNER JOIN [Order Details] ON Orders.OrderID = [OrderDetails].OrderID)
INNER JOIN Products ON [Order Details].ProductID = Products.ProductID
→ 2 relaties tussen 3 tabellen beschrijven
→ Indien in je tabelnaam een spatie staat moet je er rechte haken rond zetten om aan te
duiden dat dat 1 tabelnaam is
→ Ronde haakjes duidt aan dat dat een aparte tabel is (?)
Overzciht van alle bestelde producten te samen met de prijs die de klant moet
betalen
(Gewenste output: OrderID, ProductName, Quantity, ProductPrice, Totaal dat de klant
betaald)
SELECT OrderID, ProductName, Quantity, [Order Details].UnitPrice, Quantity * [Order
Details].UnitPrice AS ProductTotal
FROM [Order Details] INNER JOIN Products ON [Order Details].ProductID =
Products.ProductID
ORDER BY OrderID
Customers Orders
1 100 2
2 101 1
3 102 2
4 103 5
5 104 1
Lijst alle Klanten = Hoofdquery
-
Lijst CustomersID in Orders = Subquery
Andere oplossing:
SELECT LastName & “ “ & FirstName AS Werknemer, BirthDate
FROM Employees
WHERE BirthDate =
(SELECT Min(BirthDate)
FROM Employees)
→ Subquery kan 1 getal of een hele reeks getallen berekenen
Zijn er categoriën die geen actieve producten (discontinued) meer hebben? (Zijn er
categoriën waarvan alle producten uit productie zijn genomen?)
→ “Geen” duidt op een hoofd- en subquery
SELECT CategoryName
FROM Categories
WHERE Category NOT IN
(SELECT CategoryID
FROM Products
WHERE Discontinued = False)
Geef een lijst van de leveranciers die een website hebben, tesamen met het adres
van de website
SELECT CompanyName, HomePage
FROM Suppliers
WHERE HomePage IS NOT NULL
Bord (schematisch):
SELECT CompanyName, AantalOrders
Klant Count(OrderID)
FROM Customers, Orders
WHERE Orders uit 1997
GROUP BY door Count(OrderID)
HAVING Count(...) >= 10
Oplossing:
SELECT CompanyName, Count(OrderID) AS AantalOrders
FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE Year(OrderDate) = 1997
GROUP BY CompanyName
HAVING Count(OrderID) >= 10