다음 테이블에서 다음 논리에 따라 지정된 그룹에서 허용 된 사용자 목록을 가져와야합니다.단일 mysql에서 그룹으로 사용자를 가져 오기 (허용) 쿼리
- 사례 1 : 일치하지 않는 경우 모든 사용자가 자격을 취득합니다 ( user_group 테이블에 레코드 없음).
- 사례 2 : 일치 할 그룹의 사용자는 ( 배제를 가진 = 0) user_group 테이블에
- 사례 3 : 거부가 아닌 다른 그룹의 사용자 (가진 배제 = 1)
참고 MyUser
user_id | user_name
1 | a
2 | b
3 | c
MyGroup을
여기 User_Groupuserid | groupid | exclusion
1 | 1 | 0
1 | 2 | 0
2 | 1 | 1
998,131,253,
는 그 배제 = 1 레코드의 경우, 경우 1 & 3 작동하지만 2
SELECT u.id, g.id, g.code, ug.exclusion FROM MyUser u
join MyGroup g
LEFT JOIN user_group ug ON ug.group_id = g.id
AND ug.user_id = 1 -- works for user 2 and 3 but fails for user 1
WHERE (ug.exclusion <> 0 OR ug.exclusion IS NULL)
그래서 경우에 실패 쿼리 레코드 획득 및 기타 그룹은 널 조건으로 추가됩니다. 그리고 문제는 null 필드가 배타 = 0에 추가되어 전혀 필요하지 않다는 것입니다.
g1(a,c), g2(a,b,c), g3(b,c)
@strawberry ... 사용자 a는 그룹 1 및 2에서만 허용되므로 그룹 3에는 허용되지 않습니다. – Hakucha