Postgresql Aufgabe - Benötige Hilfe (Left Joins)

moyoeakadb

Neuer Benutzer
Beiträge
4
Schönen Mittag Zusammen,

ich stecke in einem Loch. Nach vielen Fehlversuchen habe ich entschlossen, mir Hilfe zu holen. Vielleicht habt ihr eine Lösung parat. Die Aufgabe, plus die Tabellen und die Musterlösung hefte ich euch an.

A1 -> Tabellen
A2 -> Aufgabe mit Tipp
A3 -> Musterlösung

Bedanke mich schon mal für Hilfe, bin gespannt auf eure Antworten.
Moyoe
 

Anhänge

  • a1.PNG
    a1.PNG
    23,3 KB · Aufrufe: 8
  • a2.PNG
    a2.PNG
    18,3 KB · Aufrufe: 7
  • a3.PNG
    a3.PNG
    10,5 KB · Aufrufe: 7
Werbung:
Gerne stelle ich dir hier mal Codes von mir rein :)

Unter anderem nämlich...

SELECT
p.projnr,
a.abtnr,
pe.vname,
pe.nname
FROM
projekt p
LEFT JOIN abteilung a ON p.abtnr = a.abtnr
LEFT JOIN personal pe ON p.projnr = pe.projnr
ORDER BY
p.projnr asc

oder

SELECT
p.projnr,
a.abtnr,
pe.vname,
pe.nname
FROM
projekt p
LEFT JOIN abteilung a ON p.abtnr = a.abtnr
LEFT JOIN personal pe ON a.chefnr = pe.persnr
ORDER BY
p.projnr asc

und

SELECT
p.projnr,
a.abtnr,
pe.vname,
pe.nname
FROM
projekt p
LEFT JOIN abteilung a ON p.abtnr = a.abtnr
LEFT JOIN personal pe ON p.projnr = pe.projnr
GROUP BY
p.projnr,a.abtnr,pe.vname,pe.nname
ORDER BY
p.projnr asc

Ich weiß nicht, ob ich mich absolut blöd anstelle, oder einfach nur auf dem Schlauch stehe.
 
kleiner Tipp:

VON: Tabelle, die einen Foreign Key enthält, von hier aus suche ich etwas
NACH: Tabelle, von der ich was holen will, PK = Primary Key, NACH wie Nachschlage-Tabelle

SELECT ... VON left join NACH on VON.FK = NACH.PK
 
Diese hier zeigt mir malle Projekte mit ihren Abteilungen, jedoch auch Vorname und Nachname der Person, ob sie chef ist oder nicht:

SELECT
p.projnr,
a.abtnr,
pe.vname,
pe.nname
FROM
projekt p
LEFT JOIN abteilung a ON p.abtnr = a.abtnr
LEFT JOIN personal pe ON a.chefnr = pe.persnr
ORDER BY
p.projnr asc

Diese hier zeigt mir eigentlich das "korrekte" Ergebnis, sie zeigt NUR die Ergebnisse, die zutreffen (WHERE)

SELECT
p.projnr,
a.abtnr,
pe.vname,
pe.nname
FROM
projekt p
LEFT JOIN abteilung a ON p.abtnr = a.abtnr
LEFT JOIN personal pe ON p.projnr = pe.projnr
WHERE
a.chefnr = pe.persnr
ORDER BY
p.projnr asc
 
Werbung:
SELECT
p.projnr,
a.abtnr,
pe.vname,
pe.nname
FROM
projekt p
LEFT JOIN abteilung a ON p.abtnr = a.abtnr
LEFT JOIN personal pe ON p.projnr = pe.projnr and a.chefnr = pe.persnr
ORDER BY
p.projnr asc

Wusste nicht, dass bei Joins eine Art "if" abfrage möglich ist, das ist ja mal mega klasse!
Vielen Dank
 
Zurück
Oben