Egy megadott csoportban NEM előforduló tagok listázása (MySQL)
Adott 2 tábla:
user {id}
group_member {uid, gid}
Mondjuk vannak felhasználók 1-10-ig, és a 3. csoportnak tagja a 4-es, 7-es és 9-es felhasználó. Én szeretném kilistáztatni tehát az 1,2,3,5,6,8,10-es felhasználót.
Persze ezt meg tudom oldani kerülővel PHP alatt, vhogy így, de az nem elég szép :)Ez kilistázza az összes felhasználót (a users.id csak ellenőrzés miatt került a kilistázandó elemekhez) és amelyik tagja a csoportnak, annak group_id-ja 3, amelyik nem, annak mind NULL.
■ user {id}
group_member {uid, gid}
Mondjuk vannak felhasználók 1-10-ig, és a 3. csoportnak tagja a 4-es, 7-es és 9-es felhasználó. Én szeretném kilistáztatni tehát az 1,2,3,5,6,8,10-es felhasználót.
Persze ezt meg tudom oldani kerülővel PHP alatt, vhogy így, de az nem elég szép :)
- SELECT
- users.id,
- out_users.id,
- group_member.gid AS group_id
- FROM
- users AS out_users
- LEFT JOIN
- (users
- JOIN
- group_member
- ON
- group_member.gid=3 AND group_member.uid=users.id)
- ON
- users.id=out_users.id
- WHERE
- users.id=out_users.id
lehet fordítva kéne
NOT IN?
Majdnem nyert :)