Vinzenz Mai: Hilfe bei SQL-Abfrage

Beitrag lesen

Hallo Anton

ims_rgroupuser:
Spalten: group_ID, user_ID, rights_ID
Gibt es einen SELECT der mir die group_IDs für folgende zwei Bedingung holt:

  • user X mit user_ID=X und rights_ID=1 ist in der gesuchten Gruppe enthalten
  • user Y mit user_ID=Y darf nicht in dieser Gruppe enthalten sein.

Folgendes ungetestetes Statement sollte dies liefern:

SELECT DISTINCT -- Du möchtest die Gruppen ja nur einmal haben  
    group_ID  
FROM ims_rgroupuser  
WHERE  
    user_ID = X     -- Deine erste Bedingung  
AND  
    rights_ID = 1   -- Deine zweite Bedingung  
AND  
    group_ID NOT IN (          -- group_id nicht in der Menge  
        SELECT  
            g.group_ID         -- aller Gruppen  
        FROM ims_rgroupuser g  
        WHERE g.user_ID = Y    -- in denen sich Benutzer Y befindet  
    )                          -- => Deine dritte Bedingung  

praktisch die wörtliche Übersetzung Deiner Bedingungen. Dieses Statement ist von den meisten Datenbankmanagementsystemen problemlos ausführbar. Beim weitverbreiteten MySQL werden Subselects jedoch erst ab Version 4.1 unterstützt.

Freundliche Grüße

Vinzenz