Skip to main content

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.

--