2016-09-27 11 views
-1

我有我所希望的是推理的短暫失誤。我有以下模式:如何在顯示其他表中是否存在項目的查詢中包含列?

schema

SELECT RoleName FROM aspnet_Roles; gives: 
----------------------------------------- 
Administrator 
Backend 
Business Manager 
Content Editor 
Employee 
Salesperson 

SELECT RoleName FROM aspnet_Roles r INNER JOIN admin_page_role apr ON r.RoleId = apr.RoleId WHERE apr.PageId = 4; 
------------------------------------------ 
Administrator 
Business Manager 
Salesperson 

我要的是第一個查詢與角色是否被分配,就像沿着完整列表:

| RoleName  | IsAssignedToPage 
--------------------------------------- 
Administrator    1 
Backend     0 
Business Manager   1 
Content Editor   0 
Employee     0 
Salesperson    1 

我看着在How to write a MySQL query that returns a temporary column containing flags...這是有道理的,但我的admin_page_role表是一個橋表,它可以包含許多頁面角色組合。

+0

我應該表現出我試着查詢。我會記得下次再做!我非常親密,它可以在一兩分鐘內拯救一個人。 – secretwep

回答

2

事情是這樣的:

SELECT RoleName, case when apr.roleid is null then 0 else 1 end as IsAssignedToPage 
FROM aspnet_Roles r 
LEFT JOIN admin_page_role apr ON r.RoleId = apr.RoleId and apr.PageId = 4 
+0

Doh! 「r.RoleId = apr.RoleId和apr.PageId = 4」這是我嘗試失蹤的部分。謝謝! – secretwep

相關問題