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 :)