Matthias Apsel: Teilmengen

Beitrag lesen

Om nah hoo pez nyeetz, alle!

Ich suche mit einer etwas komplexeren Abfrage bestimmte Schüler aus einer Klasse heraus, nämlich die, die noch unerledigte Aufgaben haben.

Ich suche jetzt alle Schüler dieser Klasse, die in dieser Abfrage nicht dabei sind, d.h. die bereits alle Aufgaben erledigt haben.

Wie stellt man sowas am geschicktesten an?

(MySQL PDO)

Im adminer ist dieses SQL zielführend.

CREATE TEMPORARY TABLE Mahnung ENGINE=INNODB  
SELECT  
   Schüler.ID AS ID,  
   Name,  
   Vorname,  
   `Text`  
FROM (  
   Kreuztabelle  
   INNER JOIN  
      Schüler  
      ON Kreuztabelle.SchülerID = Schüler.ID  
   )  
INNER JOIN  
   Aufgaben  
   ON Kreuztabelle.AufgabenID = Aufgaben.ID  
WHERE  
   Schüler.Klasse = 29 AND  
   Status = 'o' AND  
   Fälligkeit < '2014-03-09' AND  
   Erlass_k = 0 AND  
   Erlass_n = 0 ;  
  
SELECT * FROM Mahnung; -- alle Schüler mit unerledigten Aufgaben  
  
SELECT  
   Schüler.Name,  
   Schüler.Vorname  
FROM Schüler  
LEFT JOIN  
   Mahnung  
   ON Schüler.ID = Mahnung.ID  
WHERE  
   ISNULL(Mahnung.ID) AND  
   Schüler.Klasse = 29; -- alle die, die in Mahnung nicht vorkommen  
  
DROP TABLE Mahnung;

Leider krieg ich das mit PHP nicht umgesetzt.

Matthias

--
Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Auto und Automat.