Antwoorden Inner en Outer Joins - open!
--- (1) ---
SELECT p.naam product, a.naam artikel, aantal, prijs*aantal totaalprijs
FROM product p
INNER JOIN product_bestaat_uit k
on k.product_id=p.id
INNER JOIN artikel a
on a.id=k.artikel_id
order by .,naam
bovenkast - zijpaneel - 4 - 28
bovenkast - kastplank - 2 - 8
...
--- (2) ---
SELECT p.naam, sum(prijs*aantal) totaalprijs
FROM product p
INNER JOIN product_bestaat_uit k
on k.product_id=p.id
INNER JOIN artikel a
on a.id=k.artikel_id
group by p.naam
Bovenkast - 36
Deur - 20
Lade - 32
Onderkast 89
--- (3) ---
SELECT p.naam, sum(aantal) aantal
FROM product p
INNER JOIN product_bestaat_uit k
on k.product_id=p.id
INNER JOIN artikel a
on a.id=k.artikel_id
group by p.naam
Bovenkast - 6
Deur - 4
Lade - 7
Onderkast - 8
--- (4) ---
SELECT p.naam, a.naam, sum(aantal) aantal
FROM product p
INNER JOIN product_bestaat_uit k
on k.product_id=p.id
INNER JOIN artikel a
on a.id=k.artikel_id
group by p.naam, a.naam
Bovenkast - zijpaneel - 4
Bovenkast - kastplank - 2
Deur - front - 2
...
--- (5) ---
SELECT p.naam, a.naam, aantal
FROM product p
LEFT OUTER JOIN product_bestaat_uit k
on k.product_id=p.id
LEFT OUTER JOIN artikel a
on a.id=k.artikel_id
Kan ook via product bestaat uit en dan een RIGHT OUTER Join met product en INNER JOIN met artikel.
Resultaat: In ieder geval wipstoel erbij
(6)
SELECT p.naam, a.naam, aantal
FROM product p
LEFT OUTER JOIN product_bestaat_uit k
on k.product_id=p.id
LEFT OUTER JOIN artikel a
on a.id=k.artikel_id
where a.naam is NULL
Resultaat: Alleen de wipstoel
(7)
SELECT p.naam, a.naam, aantal
FROM product p
LEFT OUTER JOIN product_bestaat_uit k
on k.product_id=p.id
LEFT OUTER JOIN artikel a
on a.id=k.artikel_id
where a.naam is NULL and k.aantal is not NULL
Lade 2
Deur 6
(8)
onduidelijk
--- (9) ---
SELECT *
FROM artikel a
WHERE a.id not IN
(select product_bestaat_uit.artikel_id from product_bestaat_uit)
of
SELECT *
FROM artikel a
LEFT OUTER JOIN product_bestaat_uit
on product_bestaat_uit.artikel_id=a.id
WHERE product_bestaat_uit.product_id is NULL
1061 afdekplank 3
1082 dwars balk 5
(10)
SELECT p.naam product, a.naam artikel , sum(aantal) aantal
FROM product p
LEFT OUTER JOIN product_bestaat_uit k
on k.product_id=p.id
LEFT OUTER JOIN artikel a
on a.id=k.artikel_id
group by p.naam, a.naam
UNION
SELECT p.naam product, a.naam artikel, sum(aantal) aantal
FROM product p
RIGHT OUTER JOIN product_bestaat_uit k
on k.product_id=p.id
RIGHT OUTER JOIN artikel a
on a.id=k.artikel_id
group by p.naam, a.naam