Vinzenz Mai: MySQL - Differenzmengen

Beitrag lesen

Hallo

projekt_user
user_id | user | ...

profekt_ref_gruppe_user
id | user_id | gruppen_id

ref_kurs
id | user_id | kurs_id

So, jetzt möchte ich gerne alle User haben, die in einer bestimmten Gruppe (hier gruppen_id=4) sind und dem Kurs noch nicht zugeordnet sind.

Fehlermeldung:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXCEPT ( SELECT ....
So, hoffe mal das ich nix wichtiges vergessen hab...

ja sicher, im Handbuch nachzuschauen, ob Dein DBMS den Operator EXCEPT kennt.
Dieser Operator kennt nicht einmal MySQL 6.0.

Gib mir
    die Benutzer
    die der Gruppe mit der id 4 angehören
und sich nicht in der Liste
der User des gewünschten Kurses befinden

hört sich nach einer Lösungsmöglichkeit an:

  
SELECT                           -- Gib mir  
    pu.user                      -- die Benutzer  
FROM                             -- aus der Tabelle  
    project_user u               -- project_user (mit Alias u)  
INNER JOIN                       -- die mit der Tabelle  
    project_ref_gruppe_user pg   -- project...user (mit Alias pg)  
ON                               -- über die jeweiligen  
    u.user_id = pg.user_id       -- Spalten user_id verknüpft sind,  
WHERE                            -- wobei nur solche Benutzer interessieren,  
    pg.gruppen_id = 4            -- die der Gruppe 4 angehören  
AND                              -- und n  
    pu.user_id NOT IN (          -- noch nicht in der  
    SELECT                       -- Liste  
        k.user_id                -- der Benutzer auftreten,  
    FROM                         -- die  
        ref_kurs k               -- einem  
    WHERE                               --  
        k.kurs_id = <gewünschter Wert>  -- bestimmten Kurs zugeordnet sind.  
)

Benötigt wegen des Subselects MySQL 4.1

Freundliche Grüße

Vinzenz