tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
1762
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    polo85 polo85 ist offline Rookie
    Registriert seit
    Mar 2007
    Beiträge
    9
    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 :
    1
    2
    3
    4
    5
    6
    
     
    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
     

  2. #2
    Biber2 Biber2 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Ort
    Bremen
    Beiträge
    215
    Moin polo85,

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

    Auf SQL (sinngemäß und ungetestet)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    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
     

  3. #3
    polo85 polo85 ist offline Rookie
    Registriert seit
    Mar 2007
    Beiträge
    9
    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
     

  4. #4
    Biber2 Biber2 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Ort
    Bremen
    Beiträge
    215
    Moin polo85,

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

    Gruss Biber2
     

  5. #5
    polo85 polo85 ist offline Rookie
    Registriert seit
    Mar 2007
    Beiträge
    9
    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
     

  6. #6
    Avatar von Alex F.
    Alex F. Alex F. ist offline Mitglied Smaragd
    Registriert seit
    Jul 2004
    Beiträge
    1.034
    es müsste auch ohne subselect gehen versuch es mal so:
    Code :
    1
    2
    3
    4
    5
    
    SELECT a.username
                FROM User a, Group b, jiveGroupUser c
                WHERE a.userID = c.userID
                AND b.groupID = c.groupID
                AND [B]NOT[/B] c.name LIKE 'Team' ;
    Gruss bb
     

  7. #7
    polo85 polo85 ist offline Rookie
    Registriert seit
    Mar 2007
    Beiträge
    9
    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
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 25.08.10, 19:13
  2. Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
    Von MTMonline im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 25.04.08, 09:49
  3. C# If "nummer" else "letter" abfrage
    Von Alzurana im Forum .NET Café
    Antworten: 6
    Letzter Beitrag: 18.03.07, 13:46
  4. Abfrage "Download" oder "Öffnen"
    Von bmxvoodoo im Forum PHP
    Antworten: 3
    Letzter Beitrag: 16.12.05, 11:17
  5. Operator "AND" und Probleme bei Abfrage
    Von Tservarius im Forum PHP
    Antworten: 1
    Letzter Beitrag: 17.10.04, 21:49