Mäx: MySQL - Differenzmengen

Hi,
ich habe folgende Datenbankstruktur:
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.
Dazu wollte ich zunächst alle user der Gruppe auslesen und dann alle zugeordneten davon abziehen.
Leider klappt folgende Abfrage nicht:

(
SELECT projekt_user.user_id, user
FROM projekt_user
INNER JOIN projekt_ref_gruppe_user ON projekt_ref_gruppe_user.user_id = projekt_user.user_id
WHERE gruppen_id =4
)EXCEPT(

SELECT projekt_user.user_id, user
FROM projekt_user
INNER JOIN ref_kurs ON ref_kurs.user_id = projekt_user.user_id
INNER JOIN kurse ON kurse.kursnummer = ref_kurs.kurs_id
WHERE kursnummer =1
)
ORDER BY user

Jeweils einzeln funktionieren die Abfragen jedoch einwandfrei...
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...
hoffe mir kann jmd helfen
schonmal Danke
Gruß mäx

  1. 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

    1. ahhh, danke für die schnelle Hilfe...
      Mäx