[mysql 5] Ergebnisse aus einer Abfrage wegfallen lassen

BlackScorp21

Grünschnabel
Hi!

Habe ein Problem mit einer SQL-Abfrage. Ich lasse mir Daten aus den Tabellen ausgeben.
Dabei handelt es sich um Aufgaben für Schüler.

Ich habe aus Variablen in Java eine ID des Schuelers, seine Klasse und den Fragenbereich.

Jetzt sollen mir alle Aufgaben angezeigt werden bei denen

- die klasse = dem zugehörigem Java Wert
- die fachID = dem zugehörigem Java Wert
- die richtungsID = dem zugehörigem Java Wert

haben.

Das ist soweit kein Problem:

Code:
SELECT aufgaben.aufgabenID, aufgaben.aufgabe
FROM aufgaben,
WHERE (aufgaben.klasse = 1 AND aufgaben.fachID = 2 AND aufgaben.richtungsID = 2)

Das Problem ist nun, dass ich abfangen will das ein Schüler nicht 2 mal die gleiche Frage bekommt.

Code:
Deshalb gibt es die Tabelle "ergebnis" mit folgenden Einträgen
schuelerID | aufgabenID | datum
1              |   21            | 2008-01-01

Hier steht welcher Schueler welche Aufgabe schon hatte.

Nur wie bekomme ich das jetzt in die erste Abfrage mit rein.
Hatte es als Bedingung mit NOT versucht.
Oder mit nem Right Join.

Allerdings bisher ohne Erfolg!

Jemand ne Idee?

Danke im vorraus

BlackScorp21
 
Ich würds mal so probieren:

SQL:
SELECT aufgaben.aufgabenID, aufgaben.aufgabe
FROM aufgaben,
WHERE (
   aufgaben.klasse = 1
   AND aufgaben.fachID = 2
   AND aufgaben.richtungsID = 2
   AND aufgaben.aufgabenID not in (
      select distinct aufgabenID
      from ergebnis
      where schuelerID = <deineschuelerID>
   )
)
 
Zuletzt bearbeitet:
Danke olqs!

Das war genau das was ich schon gesucht habe. NOT IN
ich habe das immer so ähnlich nur mit NOT versucht und das hat nie geklappt.

Hast mir wirklich weitergeholfen!
Danke!
 
Zurück