업데이트에 대한
감사합니다 : 어떤 역할을 가진 사용자를위한 LEFT JOIN
을 추가했습니다. MySQL은 전체의 SELECT
목록에 표시보다 적은 컬럼에 GROUP BY
을 허용하지만, 다른 RDBMS에서 당신이 GROUP BY
에서이를 명시 적으로 tbl_user
의 열을 나열 할 필요 포함 할 것, 또는 할 것을
는
SELECT
tbl_user.*,
GROUP_CONCAT(role_name) AS roles
FROM
tbl_user LEFT JOIN tbl_roles ON tbl_user.userid = tbl_roles.userid
JOIN tbl_rolenames ON tbl_roles.roleid = tbl_rolenames.roleid
GROUP BY tbl_user.userid
주 tbl_user
에 대한 자체 조인을 추가하여 해당 테이블의 나머지 열을 가져옵니다. 같은
뭔가 :
SELECT
urole.userid,
uall.username,
uall.name,
uall.othercols,
urole.roles
FROM
tbl_user uall JOIN (
SELECT
tbl_user.userid,
GROUP_CONCAT(role_name) AS roles
FROM
tbl_user LEFT JOIN tbl_roles ON tbl_user.userid = tbl_roles.roleid
JOIN tbl_rolenames ON tbl_roles.roleid = tbl_rolenames.roleid
GROUP BY tbl_user.userid
) urole ON uall.userid = urole.userid
@Michael 프레이 나는 이미 그것을 갱신됩니다'LEFT JOIN'와 함께 그 문제를 해결하기 위해. –
그냥 왼쪽 결합 버전을 시도했지만 여전히 역할이 할당 된 사용자 만 반환합니다. (두 번째 선택을 지금 시도) –
8 번 줄에서 uall이 무엇을 의미하는지/설명 할 수 있습니까? 그것은 join (select)의 결과에 주어진 이름입니까? –