Anfängerproblem: Aus zwei Tabellen eine anzeigen

Lot Amadeus

Neuer Benutzer
Beiträge
2
Hallo allerseits, ich habe ein Problem und hoffe, dass ich keine FAQ stelle. Die Suche im Forum war leider erfolglos. Ich habe dennoch die Befürchtung, dass schon viele vor diesem Problem standen.

Konkret geht es um eine Schulverwaltungssoftware. Es liegen mir zwei Tabellen vor (ich stelle das Problem jetzt mal vereinfacht dar):

In beiden Tabellen tauchen die Personen-IDs mehrfach auf, jeweils mit unterschiedlichen Fächern sowie den personenbezogenen Merkmalen dieser Fächer (belegte Niveaustufe, belegte Stundenzahl usw.)

In der anderen Tabelle geht es um die Prüfungsfächer, es gibt hier alle Personen-IDs der ersten Tabelle, diese wiederum auch mehrfach, aber nur eine Teilmenge der Fächer der ersten Tabelle, mit dem personenbezogenen Merkmal, welche Art Prüfung das ist.

Also etwa folgendermaßen:

Personen-ID Fach Merkmal1 Merkmal2
100000001 Deutsch hoch 4
100000001 Geschichte niedrig 4
100000001 Musik niedrig 2

Personen-ID Fach Merkmal 3
100000001 Deutsch schriftlich
100000001 Geschichte mündlich

Wir wünschen uns nun eine Abfrage, die im Ergebnis eine Übersicht in der Art der ersten Tabelle liefert aber mit einer angehängten Zeile mit Merkmal 3. Wenn ein Fach kein Merkmal 3 hat bleibt es eben leer.

Personen-ID Fach Merkmal1 Merkmal2 Merkmal 3
100000001 Deutsch hoch 4 schriftlich
100000001 Geschichte niedrig 4 mündlich
100000001 Musik niedrig 2 (leer)

Ich bekomme das einfach nicht hin. An der Struktur der vorhandenen Tabellen kann ich nichts ändern, die sind so durch das Programm fixiert.

Kann mir bitte jemand einen Ansatz dafür geben, wie das geht? Ich habe schon alles Mögliche mit Join versucht, immer erfolglos :-(
Leider habe ich auch nur etwas angelesenes Wissen über SQL.

Viele Grüße
 
Werbung:
Kann mir bitte jemand einen Ansatz dafür geben, wie das geht? Ich habe schon alles Mögliche mit Join versucht, immer erfolglos :-(

Was hast Du denn versucht?

Leider habe ich auch nur etwas angelesenes Wissen über SQL.

Viele Grüße

Moin,

ich hab leider auch nur angelesenes Wissen zu SQL und auch noch keinen Kaffee ...

Code:
test=*# select * from lot1;
 p_id |    fach    |   m1    | m2
------+------------+---------+----
    1 | Deutsch    | hoch    | 4
    1 | Geschichte | niedrig | 4
    1 | Musik      | niedrig | 2
(3 rows)

test=*# select * from lot2;
 p_id |    fach    |     m3
------+------------+-------------
    1 | Deutsch    | schriftlich
    1 | Geschichte | muendlich
(2 rows)

test=*# select l1.p_id, l1.fach, l1.m1, l1.m2, l2.m3 from lot1 l1 left join lot2 l2 on ((l1.p_id,l1.fach)=(l2.p_id,l2.fach));
 p_id |    fach    |   m1    | m2 |     m3
------+------------+---------+----+-------------
    1 | Deutsch    | hoch    | 4  | schriftlich
    1 | Geschichte | niedrig | 4  | muendlich
    1 | Musik      | niedrig | 2  |
(3 rows)

Andreas
 
Werbung:
Zurück
Oben