Inner en Outer Joins - Opgaven
In deze les gaan we oefenen met de inner- en outer joins.
Case Meubelfabriek
We kijken nog een keer naar de Meubelfabriek case waar we eerder aan hebben gewerkt. Deze keer is de database echter in onderhoud en het lijkt erop dat nnog niet alle gegevens in de database staan. Toch willen we wat queries draaien. Om de juiste uitkomsten te krijgen zullen we de verschillende type joins moeten gebruiken.
Importeer eerst de (mini) database meubelfabriek_oj door het sql scipt te downloaden en te importeren (aan linker kant van deze pagina of onder files in Teams).
De query:
select count(*) from product, artikel, product_bestaat_uit
Moet als resutlaat 385 geven (Cartesian Product).
We hebben nu een database, meubelfabriek_oj (oj staat er achter om niet in de war te komen met de andere database die we al eerder hadden aangemaakt).
De database bestaat uit drie tabellen: product, artikel en een koppeltabel. De realtie product:artikel is N;M en de koppeltabel zorgt voor de ralatie.
Opgaven
Laat voor alle opgave zien welk query je hebt gebruikt.
Opgaven 1 (herhaling)
Maak een query die per product aangeeft uit welke en hoeveel artikelen dit product bestaan en druk ook de prijs van deze artikelen af. Het resutlaat ziet er ongeveer als volgt uit:
Opgaven 2 (herhaling)
Bereken de totaalprijs per product.
Product | Totaal Prijs |
Bovenkast | 36 |
Deur | 20 |
Lade | 32 |
Onderkast | 89 |
Opgave 3
Maak een overzicht gesorteerd op productnaam van alle producten dat laat zien uit hoeveel artikelen elk procuct bestaat. Bijvoorbeeld:
Opgave 4
Maak een overzicht gesorteerd op productnaam van alle producten dat laat zien uit welke artikelen plus aantal dit product bestaat. Dit is het detailoverzicht van opgave 3. Bijvoorbeeld:
Opgave 5
Het blijkt dat er een nieuwe product is ingevoerd maar dat de bijbehorende artikelen nog niet zijn ingevoerd. Pas nu het overzicht van opgave 4 aan zo dat het nieuwe product(en) ook zichtbaar wordt.
Alle producten moeten dus worden getoond.
Tip: gebruik outer join!
Opgave 6
Pas nu de query uit opgave 5 aan zodat je alleen de/het nieuwe product(en) uit het overzicht afdrukt.
Dit zijn de producten die wel in de database staan maar waaraan geen artikelen zijn gekoppeld.
Opgave 7
Er zijn artikelen uit de database verwijderd maar er zijn nog producten die een verwijizing hebben naar deze artikelen. Bijvoorbeeld product buro bestond uit de artikelen 4 poten en 1 blad. Het artikel poten is verwijderd. Je ziet nu dat het product buro bestaat uit 4 onbekende artikelen plus een blad.
Zoek uit of er in de database een product bestaat waarvan het artikel is verwijderd maar waarvan het aantal wel bekend is.
Laat zien welk query je hebt gebruikt.
Opgave 8
Maak een overzicht van alle producten en artikelen met het aantal. Zelfde als bij opgave 4.
Nu blijkt dat er producten bestaan waarvoor de artikelen nog niet zijn ingevoerd. Zorg ervoor dat jouw query alle producten laat zien dus ook de producten die geen artikelen hebben.
Is onduidelijk - kan worden overgeslagen.
Opgave 9
Welke artikel(en) wordt/worden in geen enkel product gebruikt?
Opgave 10 - bonus
Maak nu een overzicht zoals je bij opgave 4 maar laat alle producten en alle artikelen zien.
Tip: Hiervoor heb je een full outer join nodig, kijk bij de vorige les hoe dat werkt.
--