Probleme bei Abfrage: "... NOT LIKE ..."

polo85

Grünschnabel
Hallo!

Hoffentlich könnt ihr mir bei meinem kleinem Problem Helfen und zwar suche ich nach einem Statement für eine MySql DB.

Ich will alle Personen herausfinden die nicht einer bestimmten Gruppe zugeordnet sind

in etwa so:

Code:
SELECT a.username
			FROM User a, Group b, jiveGroupUser c
			WHERE a.userID = c.userID
			AND b.groupID = c.groupID
			AND c.name NOT LIKE 'Team' ;

Klappt auch super, jedoch existieren auch User die sowohl der Gruppe "Team" als auch einer anderen Gruppe zugehören, jene will ich auch aussortiert haben.

Könnt ihr mir da bitte weiterhelfen, oder zumindest einen Tipp geben in welcher Richtung ich einen Lösungsansatz finden könnte. (Outer Join, etc ...)


Vielen Dank
Schöne Grüße Polo85
 
Moin polo85,

das entspräche doch einer Zusatzbedingung "ausser die UserIds, die der Gruppe "Team" zugehörig sind.

Auf SQL (sinngemäß und ungetestet)
Code:
SELECT a.username
			FROM User a, Group b, jiveGroupUser c
			WHERE a.userID = c.userID
			AND b.groupID = c.groupID
			AND c.name NOT LIKE 'Team' 
                                    And a.UserId NOT IN (
                                                select Distinct(UserID) from jiveGroupUser 
                                                where groupID = 'Team');

Wozu und ob der Schlenker über die Group-Tabelle b nötig ist, vermag ich von hier aus nicht zu erkennen.

Gruss Biber2
 
Hi!

Also die Group b hält alle Gruppen. Und die (jive)GroupUser c verbindet jeden User mit der dessen zugehörigen Grruppen.

Deine "NOT IN" Empfehlung konnte ich leider nicht positiv durchführen, vielleicht versteht MySQL solche Subselects nicht...

Grüße
 
Moin polo85,

sorry, mein Fehler.
Ändere bitte das "NOT IN" um in "NOT EXISTS" bei mySQL.
Code:
..
And NOT EXISTS (
                                                select * from jiveGroupUser 
                                                where groupID = 'Team');

Gruss Biber2
 
Hallo!

Also das mit dem NOT EXISTS hab ich auch am Anfang ausprobiert, jedoch bin ich mir nun ziemlich sicher, dass MYSQL unter der Vers. 4 keine Subselects kann. Eine Umgehung ist mir nicht eingefallen.

Ich habe jetzt den Umweg genommen und 2 Selects an die DB geschickt und sortiere dann entsprechend mit Java welche User in der Gruppe sind und welche nicht.

Dankeschön
und Viele Grüße
Polo
 
es müsste auch ohne subselect gehen versuch es mal so:
Code:
SELECT a.username
			FROM User a, Group b, jiveGroupUser c
			WHERE a.userID = c.userID
			AND b.groupID = c.groupID
			AND NOT c.name LIKE 'Team' ;
Gruss bb
 
hi brainbyte!

Das hab ich auch schon ausprobiert, jedoch sind die mitglieder nicht einer Gruppe zugeordnet sondern 1..n . Mit deinem Vorschlag gelingt es mir die Ergebnismenge um die Team-Mitglieder zu reduzieren, jedoch sind sie noch in weiteren Gruppen vertreten und tauchen wieder auf...

Grüße Polo85
 
Zurück