SQL Abfrage - Zeilen die nicht enthalten sind



  • Hallo,

    ich hänge gerade an einer SQL Abfrage und bekomme es nicht hin. Ich habe 3 Tabellen. Es geht um Studiengänge, von denen einer, zwei oder alle in einem Jahr durchgeführt werden.

    Tabelle Jahr
    ID Bezeichnung
    1 2009
    2 2010
    3 2011

    Tabelle Studiengang
    ID Bezeichnung
    1 SG 1
    2 SG 2
    3 SG 3

    Tabelle Durchfuehrung
    SG_ID J_ID

    In der Tabelle Durchfuehrung wird ersichtlich, welcher der 3 Studiengänge in welchem Jahr durchgeführt wird. Steht darin z.B. der Datensatz 1-1, dann wurde im Jahr 2009 der Studiengang SG 1 durchgeführt.

    Jetzt möchte ich eine Abfrage, die als Ergebnis die Bezeichnung der Studiengänge zurückgibt, welche in einem Jahr NICHT durchgefürt worden. Wenn in einem Jahr alle in der Tabelle Studiengang enthaltenen Studiengänge durchgeführt worden, dann soll die Abfrage leer sein. Übergeben wird der Abfrage der Parameter Jahr (also z.B. 2009).

    Ich bekomm es zwar hin, dass alle Studiengänge anzeigt werden, die durchgeführt worden, aber ich will es ja gerade andersrum.

    Ich hoffe, ihr könnt mir helfen.

    Danke!



  • BSMemmingen schrieb:

    Ich bekomm es zwar hin, dass alle Studiengänge anzeigt werden, die durchgeführt worden, aber ich will es ja gerade andersrum.

    Ich würde vermutlich "NOT IN (sub-select)" verwenden.
    Also SELECT * FROM [Studiengang] WHERE [ID] NOT IN (...)



  • Ok, ich habs:

    Select s.Bezeichnung From Studiengang s
    Where s.Studiengang_ID Not In (Select d.Studiengang_ID From Durchfuehrung d, Jahr j Where j.Jahr_ID=d.Jahr_ID And j.Bezeichnung='2009')

    Jetzt raucht mir der Kopf... 🙂


Anmelden zum Antworten