Click here to Skip to main content
15,900,108 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I have 2 tables like that:

SQL
PermissionsTbl

PermissionID int NotNull 
PermissionDescription nvarchar(100) NotNull

PermissionID PermissionDescription 
1 Human Resources 
2 Employees Data 
3 Departements

ActivePermissionsTbl

ActivePermID bigint NotNull 
PermissionID int    NotNull 
UserID       int    NotNull 
PageActive   bit    NotNull

ActivePermID PermissionID UserID   PageActive
1            1            1        True 
2            2            1        True 
3            3            2        True

what I want is show data like that:

PermissionID      PermissionDescription     PageActive     UserID
1                 Human Resources           True           1 
2                 Employees Data            True           1 
3                 Departements                             1 
1                 Human Resources                          2 
2                 Employees Data                           2 
3                 Departements              True           2


I try several methods of Join , but I failed< any suggestion please. Thanks.
Posted
Updated 4-Jul-13 12:41pm
v2

This will do:

SQL
select p.PermissionID, p.PermissionDescription, a.PageActive, a.UserID
FROM permissionTbl p INNER JOIN activePermissionTbl a ON a.PermissionID = p.PermissionID
UNION ALL
(select b.PermissionID, b.PermissionDescription, b.PageActive, b.UserID
FROM
(select p.PermissionID, p.PermissionDescription, '' AS PageActive, a.UserID
FROM permissionTbl p INNER JOIN (SELECT DISTINCT UserID FROM activePermissionTbl) AS a ON 1 = 1) b
LEFT JOIN activePermissionTbl a ON b.PermissionID = a.PermissionID and b.UserID = a.UserID
WHERE a.UserID IS NULL)
ORDER BY 4, 1


SQL Fiddle[^]
 
Share this answer
 
Comments
damodara naidu betha 5-Jul-13 1:54am    
good 5+.. try solution2
try this...

SQL
WITH TEMPCTE AS (
SELECT permissionTbl.PermissionDescription,permissionTbl.PermissionID,A.UserID FROM permissionTbl
CROSS JOIN (SELECT DISTINCT activePermissionTbl.UserID FROM activePermissionTbl) AS A 
)
SELECT TEMPCTE.PermissionID,TEMPCTE.PermissionDescription,ISNULL(PageActive,'') PageActive,
TEMPCTE.UserID FROM TEMPCTE LEFT JOIN activePermissionTbl A
ON TEMPCTE.PermissionID = A.PermissionID AND TEMPCTE.UserID = A.UserId


Happy coding...
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900