45 lines
1.3 KiB
Plaintext
45 lines
1.3 KiB
Plaintext
-- Übungen zu Outer joins
|
||
|
||
/*
|
||
Geben Sie eine Query für folgende Tabelle an:
|
||
erste Spalte: Name eines Kunden
|
||
zweite Spalte: Anzahl Bestellungen (bei Kunden, die keine
|
||
Bestellungen haben, soll hier 0 stehen)
|
||
*/
|
||
select kunde.name, count(bestellung.id)
|
||
from kunde
|
||
left join bestellung on bestellung.kunde_id = kunde.id
|
||
group by kunde.id;
|
||
|
||
/*
|
||
Geben Sie eine Query für folgende Tabelle an:
|
||
erste Spalte: Name des Kunden
|
||
zweite Spalte: Gesamtbetrag, den der Kunde bezahlen muss
|
||
*/
|
||
select k.name, sum(p.preis * bp.anzahl)
|
||
from kunde k
|
||
left join bestellung b on b.kunde_id = k.id
|
||
left join bestellung_produkt bp on bp.bestellung_id = b.id
|
||
left join produkt p on p.id = bp.produkt_id
|
||
group by k.id;
|
||
|
||
/*
|
||
Geben Sie eine Query für folgende Tabelle an:
|
||
erste Spalte: Produktname
|
||
zweite Spalte: Anzahl – wieviele Produkte müssen geliefert werden?
|
||
dritte Spalte: wie viele Produkte sind auf Lager?
|
||
*/
|
||
select p.name, sum(bp.anzahl) bestellt, p.anzahl auf_lager
|
||
from produkt p
|
||
join bestellung_produkt bp on bp.produkt_id = p.id
|
||
group by p.id;
|
||
|
||
/*
|
||
Wie müsste man die Query verändern, damit man nur die Produkte
|
||
sieht, die ausverkauft sind?
|
||
*/
|
||
select p.name, sum(bp.anzahl) bestellt, p.anzahl auf_lager
|
||
from produkt p
|
||
join bestellung_produkt bp on bp.produkt_id = p.id
|
||
group by p.id
|
||
having sum(bp.anzahl) >= p.anzahl; |