0
사용자에게 특정 항목에 대한 액세스 권한을 정의하는 권한 시스템이 있습니다.SQL 쿼리 및 unpivot 구문
회원들과 항목에 대한 액세스 권한을 표시하는 보고서 페이지가 필요합니다.
+---------+--------+--------+------+--------+
| Members | Item 1 | Item 2 | .... | Item N |
+---------+--------+--------+------+--------+
| Member1 | x | + | .... | + |
+---------+--------+--------+------+--------+
| Member2 | + | x | .... | + |
+---------+--------+--------+------+--------+
내가 3 표는 회원들과 그들이 액세스 할 수있는 항목을 나열하는 쿼리에 가입해야하지만 피벗 구문으로 변환 할 수 없습니다 :
표는 다음과 같이해야합니다.
Select members.id memberID, members.name memberName, items.name as item
From members
Left Join member_permission On memberID = members.id
Left Join items On items.id = member_permission.itemID
이
는 작동하지 내가 가진 쿼리입니다 :Select memberName, itemName
From (
select members.id, members.name, item.name as itemName
from members
Left Join member_permission On memberID = members.id
Left Join item On item.id = member_permission.itemID
) p
Unpivot
(itemName For name IN (item.name)) as unp
에러 나는 나타납니다
나는 당신이 쿼리에 대한 UNPIVOT을 사용할 필요가 없습니다 Sqlfiddle열 이름 "이름"과 UNPIVOT 연산자 충돌에 지정된 기존 UNPIVOT 인수의 열 이름.
감사를 참조하십시오; 당신이 값을 알 수없는 번호가있는 경우 다음 쿼리는 동적 SQL을 사용해야합니다 항목 이름을 열 이름으로 어떻게 사용할 수 있습니까? 즉, "항목 1, 항목 2"대신 "Blue Item, Red Item" – dvdmn
@dvdnhm 여전히 동일한 프로세스를 사용할 수 있지만'rownumber() '를 사용하여 열 목록을 생성하는 대신에 다음과 같은 값을 사용합니다. 너의 칼럼. – Taryn