From ce530f4905a84c844d5d023f999e23319ebffd0d Mon Sep 17 00:00:00 2001 From: lonkaars Date: Wed, 5 Oct 2022 13:59:06 +0200 Subject: meer opdracht 2 af --- opdracht-2/img_erd.svg | 3 ++ opdracht-2/img_strokendiagram.svg | 3 ++ opdracht-2/imgs.drawio | 1 + opdracht-2/opdracht-2.m4 | 75 +++++++++++++-------------------------- opdracht-2/q6.sql | 3 ++ opdracht-2/q8.sql | 1 + opdracht-2/t10.sql | 1 + opdracht-2/t11.sql | 7 ++++ opdracht-2/t4.sql | 1 + opdracht-2/t5.sql | 1 + opdracht-2/t6.sql | 10 ++++++ opdracht-2/t7.sql | 10 ++++++ opdracht-2/t8.sql | 1 + opdracht-2/t9.sql | 1 + 14 files changed, 68 insertions(+), 50 deletions(-) create mode 100644 opdracht-2/img_erd.svg create mode 100644 opdracht-2/img_strokendiagram.svg create mode 100644 opdracht-2/imgs.drawio create mode 100644 opdracht-2/q6.sql create mode 100644 opdracht-2/q8.sql create mode 100644 opdracht-2/t10.sql create mode 100644 opdracht-2/t11.sql create mode 100644 opdracht-2/t4.sql create mode 100644 opdracht-2/t5.sql create mode 100644 opdracht-2/t6.sql create mode 100644 opdracht-2/t7.sql create mode 100644 opdracht-2/t8.sql create mode 100644 opdracht-2/t9.sql diff --git a/opdracht-2/img_erd.svg b/opdracht-2/img_erd.svg new file mode 100644 index 0000000..e32382a --- /dev/null +++ b/opdracht-2/img_erd.svg @@ -0,0 +1,3 @@ + + +
Klant
Klant
Order
Order
Product
Product
bevat
bevat
plaatst
plaatst
Text is not SVG - cannot display
\ No newline at end of file diff --git a/opdracht-2/img_strokendiagram.svg b/opdracht-2/img_strokendiagram.svg new file mode 100644 index 0000000..001c551 --- /dev/null +++ b/opdracht-2/img_strokendiagram.svg @@ -0,0 +1,3 @@ + + +
ID
ID
Naam
Naam
Postcode
Postcode
Huisnummer
Huisnummer
Telefoonnummer
Telefoonnummer
Woonplaats
Woonplaats
ID
ID
KlantID
KlantID
Besteldatum
Besteldatum
Klant
Klant
Status
Status
Leverdatum
Leverdatum
Order
Order
ID
ID
Naam
Naam
Eenheid
Eenheid
Prijs
Prijs
Beschrijving
Beschrijving
Product
Product
Voorraad
Voorraad
ID
ID
OrderID
OrderID
ProductID
ProductID
Aantal
Aantal
OrderProduct
OrderProduct
p
p
p
p
p
p
p
p
a
a
a
a
Text is not SVG - cannot display
\ No newline at end of file diff --git a/opdracht-2/imgs.drawio b/opdracht-2/imgs.drawio new file mode 100644 index 0000000..3d95ee8 --- /dev/null +++ b/opdracht-2/imgs.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/opdracht-2/opdracht-2.m4 b/opdracht-2/opdracht-2.m4 index e733be3..eebbed3 100644 --- a/opdracht-2/opdracht-2.m4 +++ b/opdracht-2/opdracht-2.m4 @@ -8,62 +8,37 @@ q_with_test(2) ## Opdracht 3 -> Voordat je bovenstaande gaat doen (als het goed is zou je deze conclusie zelf -> ook al hebben getrokken, ga je eerst je ontwerp aanpassen. -> - Pas het ontwerp: ERD en strokendiagram aan. - -## Opdracht 4 - -> Maak een query van de tabel product waarbij alle kolomkoppen een logische -> 'Aliasnaam' krijgen. - -## Opdracht 5 - -> Maak een query waarbij de volgende output verschijnt: -> - 'De klant' ' woont in de plaats:' - -## Opdracht 6 - -> Maak voor een willekeurige klant een query aan die de totaalprijs laat zien van -> het aantal producten wat binnen 1 order is besteld in Euro's. Waarbij minimaal -> de volgende producten/aantallen voorkomen in de order: -> product 1, 3 stuks -> product 2, 5 stuks -> product 3, 2 stuks -> Tip: zet de rekensom in de formule van de query. - -## Opdracht 7 - -> Rond de uitkomst van de hiervoor gemaakte query af op hele Euro's. - -## Opdracht 8 - -> Maak een query die van de orderlijst uitsluitend de orders laat zien die de -> status 'nog te leveren' hebben. - -## Opdracht 9 - -> Maak een query die alle klantgegevens laat zien voor alle orders die status -> 'nog te leveren' hebben. - -## Opdracht 10 - -> Maak een query waarbij alle artikelprijzen met 10% worden verhoogd. -> In de query toon je de oorspronkelijke prijs en de nieuwe prijs. -> (de nieuwe prijs wordt alleen getoond, niet opgeslagen in de database). - -## Opdracht 11 - -> Wat is het verschil tussen een join en een union, toon dit aan middels een -> sprekend voorbeeld? +
+
+ ERD +
+ +
+
+ Strokendiagram +
+ +q_with_output(4) +q_with_output(5) +q_with_test(6) +q_with_output(7) +q_with_test(8) +q_with_output(9) +q_with_output(10) +q_with_output(11) + +Een union voegt de *rijen* van twee `select` statements samen, terwijl een join +tabel*kolommen* samenvoegt met behulp van overeenkomende waardes. ## Opdracht 12 -> Wat doet de 'group by' functie? +`group by` haalt rijen weg afhankelijk van welke rijen de zelfde waardes hebben +in de doorgegeven kolommen. ## Opdracht 13 -> Wat is het effect van 'having'? +`having` werkt het zelfde als `where`, maar `where` filtert vòòr `group by`, +terwijl `having` ná `group by` filtert. ## Opdracht 14 diff --git a/opdracht-2/q6.sql b/opdracht-2/q6.sql new file mode 100644 index 0000000..397f403 --- /dev/null +++ b/opdracht-2/q6.sql @@ -0,0 +1,3 @@ +update OrderProduct set Aantal = 3 where ProductID = 1; +insert into OrderProduct (OrderID, ProductID, Aantal) values (1, 2, 5); +insert into OrderProduct (OrderID, ProductID, Aantal) values (1, 3, 2); diff --git a/opdracht-2/q8.sql b/opdracht-2/q8.sql new file mode 100644 index 0000000..e0d4855 --- /dev/null +++ b/opdracht-2/q8.sql @@ -0,0 +1 @@ +update `Order` set Status = "Nog te leveren" where ID = 1; diff --git a/opdracht-2/t10.sql b/opdracht-2/t10.sql new file mode 100644 index 0000000..1fef2e5 --- /dev/null +++ b/opdracht-2/t10.sql @@ -0,0 +1 @@ +select Prijs, round(Prijs * 1.10, 2) as NieuwePrijs from Product; diff --git a/opdracht-2/t11.sql b/opdracht-2/t11.sql new file mode 100644 index 0000000..aa17c5a --- /dev/null +++ b/opdracht-2/t11.sql @@ -0,0 +1,7 @@ +-- laat twee ongerelateerde tabellen onder elkaar zien +-- (werkt want aantal kolommen komt overeen) +select * from Klant union select * from Product; + +-- laat twee gerelateerde tabellen naast elkaar zien +-- (voegt kolommen toe) +select * from Klant left join `Order` on `Order`.KlantID = Klant.ID; diff --git a/opdracht-2/t4.sql b/opdracht-2/t4.sql new file mode 100644 index 0000000..a04cef1 --- /dev/null +++ b/opdracht-2/t4.sql @@ -0,0 +1 @@ +select * from Product; diff --git a/opdracht-2/t5.sql b/opdracht-2/t5.sql new file mode 100644 index 0000000..b5a02c4 --- /dev/null +++ b/opdracht-2/t5.sql @@ -0,0 +1 @@ +select concat("De klant ", Naam, " woont in de plaats ", Woonplaats) as "Een query waarbij de volgende output verschijnt" from Klant; diff --git a/opdracht-2/t6.sql b/opdracht-2/t6.sql new file mode 100644 index 0000000..83eddf5 --- /dev/null +++ b/opdracht-2/t6.sql @@ -0,0 +1,10 @@ +select + `Order`.ID as OrderID, + concat("product ", Product.ID, ", ", OrderProduct.Aantal, " stuks") as OrderInhoud, + round(Product.Prijs * OrderProduct.Aantal, 2) as Subtotaal +from OrderProduct + left join `Order` on `Order`.ID = OrderProduct.OrderID + left join Klant on Klant.ID = `Order`.KlantID + left join Product on Product.ID = OrderProduct.ProductID +where Klant.ID = 1 +group by OrderProduct.ProductID, `Order`.ID; diff --git a/opdracht-2/t7.sql b/opdracht-2/t7.sql new file mode 100644 index 0000000..a804a10 --- /dev/null +++ b/opdracht-2/t7.sql @@ -0,0 +1,10 @@ +select + `Order`.ID as OrderID, + concat("product ", Product.ID, ", ", OrderProduct.Aantal, " stuks") as OrderInhoud, + round(Product.Prijs * OrderProduct.Aantal) as Subtotaal +from OrderProduct + left join `Order` on `Order`.ID = OrderProduct.OrderID + left join Klant on Klant.ID = `Order`.KlantID + left join Product on Product.ID = OrderProduct.ProductID +where Klant.ID = 1 +group by OrderProduct.ProductID, `Order`.ID; diff --git a/opdracht-2/t8.sql b/opdracht-2/t8.sql new file mode 100644 index 0000000..0281e6e --- /dev/null +++ b/opdracht-2/t8.sql @@ -0,0 +1 @@ +select * from `Order` where Status = "Nog te leveren"; diff --git a/opdracht-2/t9.sql b/opdracht-2/t9.sql new file mode 100644 index 0000000..8307a0b --- /dev/null +++ b/opdracht-2/t9.sql @@ -0,0 +1 @@ +select Klant.* from `Order` left join Klant on Klant.ID = `Order`.KlantID where `Order`.Status = "Nog te leveren"; -- cgit v1.2.3