sql 2b Flashcards
Erstellen Sie eine Liste aller Kunden mit ihren Bestellungen
select Kunden.KundenNr, Kunden.Name, Bestellung.BestellNr,
Bestellung.Datum
from Kunden, Bestellung
where Kunden.KundenNr = Bestellung.KundenNr;
select Kunden.KundenNr, Kunden.Name, Bestellung.BestellNr,
Bestellung.Datum
from Kunden INNER JOIN Bestellung
ON Kunden.KundenNr = Bestellung.KundenNr;
Erstellen Sie eine Liste mit allen Artikeln und ihren Bestellungen, wobei auch
diejenigen Artikel ausgegeben werden sollen, die noch nie bestellt wurden.
select A.*, BA.BestellNr, BA.Menge
from Artikel A LEFT JOIN BestellungArtikel BA
ON A.ArtikelNr = BA.ArtikelNr;
Erstellen Sie eine Liste mit allen Bestellungen mit ihren Lieferungen, wobei
auch diejenigen Bestellungen ausgegeben werden sollen, die noch keine
Lieferung erfolgt ist.
select BA.*, L.Datum, L.Menge
from BestellungArtikel BA LEFT JOIN Lieferung L
ON BA.ArtikelNr = L.ArtikelNr
AND BA.BestellNr = L.BestellNr;
Erstellen Sie eine Liste mit allen Bestellungen, auch mit denjenigen, für die
noch keine Artikel erfasst wurden.
select B.BestellNr, BA.ArtikelNr, BA.Menge
FROM Bestellung B LEFT JOIN BestellungArtikel BA
ON B.BestellNr = BA.BestellNr;
Welcher Mitarbeiter hat das kleinste Gehalt
select name, min(gehalt)
FROM Mitarbeiter;
select name, min(gehalt)
FROM Mitarbeiter
group by name;
select *
FROM Mitarbeiter
where gehalt = min(gehalt);
Welcher Mitarbeiter hat das kleinste Gehalt
select *
FROM Mitarbeiter
where gehalt = (select min(gehalt) from mitarbeiter);
Welcher Mitarbeiter hat das größte Gehalt
select *
FROM Mitarbeiter
where gehalt = (select max(gehalt) from mitarbeiter);
Welche Mitarbeiter bekommen ein größeres Gehalt als der Durschnitt aller
Mitarbeiter
select *
FROM Mitarbeiter
where gehalt > (select avg(gehalt) from mitarbeiter);
Welcher Mitarbeiter hat ein Gehalt, das genauso hoch ist, wie das kleinste
Gehalt der Mitarbeiter, die nach dem 1.1.2000 eingestellt wurden.
select *
from mitarbeiter
where gehalt = (select min(gehalt)
from mitarbeiter
where einstellung > ‘2000-1-1’)
Welcher Mitarbeiter, der nach dem 1.1.2000 eingestellt wurde, hat ein
Gehalt, das genauso hoch ist, wie das kleinste Gehalt aller Mitarbeiter.
select * from mitarbeiter
where gehalt = (select min(gehalt) from mitarbeiter)
and einstellung > ‘2000-1-1’
Welche Mitarbeiter haben ein Gehalt, das größer ist, als das Durchschnitts-
gehalts der Mitarbeiter, die nach dem 1.1.2008 eingestellt wurden.
select * from mitarbeiter
where gehalt > (select avg(gehalt)
from mitarbeiter
where einstellung > ‘2008-1-1’)
Welcher Mitarbeiter hat ein Gehalt, das größer ist, wie das Doppelte des
Durchschnittsgehaltes aller Mitarbeiter.
select * from mitarbeiter
where gehalt > 2* (select 2*avg(gehalt *2) *2
from mitarbeiter) *2;
Welche Kunden haben bereits Bestellungen gemacht, wobei ein Kunde nur
1x ausgegeben werden darf.
Ausgabe: Attribute der Tabelle Kunden; Lösung mit join
select k.kundenNr, k.Name
from Kunden k, bestellung b
where k.kundenNr = b.kundenNr
group by k.kundenNr, k.name;
Aufgabe wie oben; Lösung mit subquery
SELECT kundenNr, Name
FROM Kunden
where kundenNr IN (select kundenNr
from bestellung);
Welche Artikel wurden nach dem 31.1.2008 bestellt
Ausgabe: Artikelnummer; Lösung mit join
select artikelNr
from bestellungartikel ba,bestellung b
where ba.bestellnr=b.bestellnr
and datum > ‘2008-1-31’;