45 lines
No EOL
1.7 KiB
SQL
45 lines
No EOL
1.7 KiB
SQL
/* 4.5 */
|
|
/*
|
|
Mitarbeiter - Projekt Kombinationen sind nach Join einzigartig, da Join die ersten Einträge verbindet
|
|
und die restlichen gleichen Kombinationen verwirft
|
|
(z.B. 100 -> 346 kriegt nur den ersten Eintrag, alle weiteren Erscheinungen dieser Kombination
|
|
werden verworfen)
|
|
Ergänzung: Mnr + ProjNr -> Composite primary key -> Als einzigartig definiert in der Tabelle
|
|
*/
|
|
SELECT Projekt.Bezeichnung AS Bezeichnung, COUNT(ProjektMitarbeiter.Mnr) AS "# Mitarbeiter" FROM Projekt
|
|
INNER JOIN ProjektMitarbeiter ON Projekt.ProjNr = ProjektMitarbeiter.ProjNr
|
|
GROUP BY Projekt.ProjNr
|
|
ORDER BY COUNT(ProjektMitarbeiter.Mnr) DESC;
|
|
|
|
/* 4.6 */
|
|
SELECT
|
|
Mitarbeiter.Name AS Name,
|
|
Mitarbeiter.Vorname AS Vorname,
|
|
ProjektMitarbeiter.Zeitanteil AS Stunden,
|
|
Projekt.Bezeichnung AS Bezeichnung
|
|
FROM Mitarbeiter
|
|
INNER JOIN ProjektMitarbeiter ON Mitarbeiter.Mnr = ProjektMitarbeiter.Mnr
|
|
LEFT JOIN Projekt ON Projekt.ProjNr = ProjektMitarbeiter.ProjNr
|
|
ORDER BY Mitarbeiter.Name, Mitarbeiter.Vorname;
|
|
|
|
/* 4.7 */
|
|
SELECT
|
|
Mitarbeiter.Name AS Name,
|
|
Mitarbeiter.Vorname AS Vorname,
|
|
COUNT(Kind.Mnr) AS "# Kinder"
|
|
FROM Projekt
|
|
INNER JOIN Mitarbeiter ON Mitarbeiter.Mnr = Projekt.Leiter
|
|
LEFT JOIN Kind ON Mitarbeiter.Mnr = Kind.Mnr
|
|
GROUP BY Mitarbeiter.Mnr
|
|
ORDER BY Mitarbeiter.Name, Mitarbeiter.Vorname;
|
|
|
|
/* 4.8 */
|
|
SELECT
|
|
Mitarbeiter.Name AS Familienname,
|
|
Mitarbeiter.Vorname AS Elternname,
|
|
Kind.Vorname AS Kindername
|
|
FROM ProjektMitarbeiter
|
|
INNER JOIN Mitarbeiter ON ProjektMitarbeiter.Mnr = Mitarbeiter.Mnr
|
|
INNER JOIN Kind ON Mitarbeiter.Mnr = Kind.Mnr
|
|
INNER JOIN Projekt ON ProjektMitarbeiter.ProjNr = Projekt.ProjNr
|
|
WHERE Projekt.Bezeichnung = "Schulvernetzung"; |