Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Anfängerproblem: Aus zwei Tabellen eine anzeigen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Lot Amadeus, 15 Mai 2013.

  1. Lot Amadeus

    Lot Amadeus Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Was hast Du denn versucht?

    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
     
  3. Lot Amadeus

    Lot Amadeus Neuer Benutzer

    Danke sehr, es hat so funktioniert.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden