Matthias Apsel: Datenbankabfrage gesucht

Hallo alle,

Es gibt Aufgaben A und eine Ergebnistabelle E, in der die AufgabenID als Fremdschlüssel steht.

Ich suche alle Aufgaben, die es in der Tabelle A aber nicht in Tabelle E gibt.

Zielführend ist

 SELECT a.ID, e.AufgabenID 
   FROM Ergebnisse e RIGHT JOIN Aufgaben a
     ON a.ID = e.AufgabenID 
 GROUP BY a.ID

Allerdings liefert mir das folgende Ergebnismenge

|ID|AufgabenID |---| |25|NULL |26|NULL |27|27 |28|28

Es werden also alle existierenden Aufgaben gezeigt. Wie muss ich jetzt verfahren, um nur die angezeigt zu bekommen, bei denen in der rechten Spalte NULL steht?

So, jetzt lass ich die Frage stehen, obwohl ich selbst eine Lösung gefunden habe. Vielleicht gibts ja auch noch was clevereres ;-)

Bis demnächst
Matthias

--
Signaturen sind bloed (Steel) und Markdown ist mächtig.

akzeptierte Antworten

  1. Hallo Matthias Apsel,

    Zielführend ist

     SELECT a.ID, e.AufgabenID 
       FROM Ergebnisse e RIGHT JOIN Aufgaben a
         ON a.ID = e.AufgabenID 
     GROUP BY a.ID
    

    eine Lösung:

     SELECT a.ID, e.AufgabenID 
       FROM Ergebnisse e RIGHT JOIN Aufgaben a
         ON a.ID = e.AufgabenID 
     WHERE e.AufgabenID IS NULL
     GROUP BY a.ID
    

    Bis demnächst
    Matthias

    --
    Signaturen sind bloed (Steel) und Markdown ist mächtig.
  2. Tach!

    Ich suche alle Aufgaben, die es in der Tabelle A aber nicht in Tabelle E gibt.

    Eine correlated subquery mit NOT EXISTS würde ich nehmen.

    dedlfix.

    1. Hallo dedlfix,

      Eine correlated subquery mit NOT EXISTS würde ich nehmen.

       SELECT a.ID, e.AufgabenID 
         FROM Aufgaben a 
         WHERE NOT EXISTS (
           SELECT * FROM Ergebnisse e 
             WHERE a.ID = e.AufgabenID
           )
       GROUP BY a.ID
      

      Passt.

      Bis demnächst
      Matthias

      --
      Signaturen sind bloed (Steel) und Markdown ist mächtig.