source

모든 그룹을 선택하고 사용자가 그룹에 있는지 확인합니다.

manycodes 2023. 6. 10. 09:30
반응형

모든 그룹을 선택하고 사용자가 그룹에 있는지 확인합니다.

테이블이 두 개 있습니다.groups그리고.groups_members

무리

이드 이름.
1 그룹 1
2 그룹 2
3 그룹 2

그룹_구성원

group_id user_id
1 123
2 123
2 555
1 4643
3 45434

이제 모든 그룹을 표시하고 사용자가 그룹을 표시하는지 확인합니다.user_id = 555)이 그룹에 있는지 여부.이와 같은 것:

SELECT g.id, g.name, is_in_group 
FROM g.groups 
JOIN groups_members gm ON gm.user_id = 555

예상 출력:

이드 이름. is_in_group
1 그룹 1 NULL
2 그룹 2 1
3 그룹 3 NULL

그렇게 하는 방법은 여러 가지가 있습니다. 제가 생각하는 간단한 방법은 다음과 같습니다.

SELECT 
  g.*, 
  CAST(gm.user_id / gm.user_id AS UNSIGNED) AS is_in_group
FROM sgroups AS g
LEFT JOIN sgroups_members AS gm 
  ON g.id = gm.group_id 
  AND gm.user_id = 555;

-- id   name        is_in_group
-- 1    GROUP 1     NULL
-- 2    GROUP 2     1
-- 3    GROUP 3     NULL

언급URL : https://stackoverflow.com/questions/75314090/select-all-groups-and-check-if-user-is-in-a-group-or-not

반응형