이 글은 나를 위해 작성하는 혼란스러운 질문입니다.SQL 전체 외부 조인 제외, 존재하지 않는 행을 선택하십시오.
내가 3 개 테이블
이section
id
name
permission
id
section_id
name
exclusion_permission
permission_id
쿼리는 다음과 같다 :
SELECT
p.id AS permission_id,
p.name AS permission_name,
s.id AS section_id,
s.name AS section_name
FROM
section s
LEFT OUTER JOIN
permission p
ON
p.section_id = s.id
LEFT OUTER JOIN
exclusion_permission lep
ON
lep.permission_id = p.id
WHERE
lep.permission_id IS NULL
테이블 데이터는 다음과 같습니다
는section
id name
1 admin
2 sales
3 moderator
4 intern
permission
id section_id name
1 1 root
2 2 sell
3 2 buy
4 3 edit_user
5 3 delete_user
쿼리
1, root, 1, admin
2, sell, 2, sales
3, buy, 2, sales
4, edit_user, 3, moderator
5, delete_user, 3, moderator
,, 4, intern
,536를 반환합니다 내가 믹스에 다음 배제 권한을 던져
지금 :
exclusion_permission
permission_id
1
5
은 쿼리가 반환됩니다 : 당신이 볼 수 있듯이
2, sell, 2, sales
3, buy, 2, sales
4, edit_user, 3, moderator
,, 4, intern
, 사회자 섹션은 아직 거기가 하나 더 있기 때문에 그와 관련된 행. 그러나 관리 섹션은 연관된 유일한 권한이 제외 되었기 때문에 제거됩니다. 내가 원하는 것은 내 쿼리에서 다음을 반환하도록하는 것입니다.
섹션에 권한이없는 경우 섹션을 표시합니다. 또한 섹션에 모두 제외 된 권한이있는 경우에도 관련 권한이없는 섹션이 표시됩니다.
어떻게하면됩니까? 감사합니다
이것은 원하는 결과를 제공하지 않습니다. –