2013-02-04 91 views
2

我在SQL兩個表:SQL Server 2008中使用Array

用戶:

id name  roleid 
1  David 1 
2  Sean  2 
3  Joe  1 

角色:

roleid desc 
1   copy 
2   delete 
3   move 

現在我用這個cmd以選擇與用戶的用戶許可

SELECT * FROM Users u INNER JOIN Roles r ON u.roleid = r.roleid 

現在我想知道w如果可以構建SQL表(Roles Table),則它將動態地爲每個用戶的roleid數量。是這樣的:

用戶:

id name  roleid roleid2 roleid3 
1  David 1  2  3 
2  Sean  2 
3  Joe  1  3 
+0

如何使用視圖? (http://msdn.microsoft.com/en-us/library/aa214068%28v=sql.80%29.aspx) – cheesemacfly

+0

查看是像一個動態表? – MTA

+0

它可以用作虛擬表是,它在文檔中聲明:「從多個表中加入列,使它們看起來像一個表。」這似乎是你正在尋找的。 – cheesemacfly

回答

1

使用一個associative entity解決UsersRoles之間的許多一對多的關係。 UserRole表中的組合主鍵將防止重複分配角色,引用UsersRoles表的外鍵將保持參照完整性。

請參閱SQL fiddle瞭解樣例實現。

0

起初,我建議你使用多對多的關係。這意味着trird表:UsersRoles(userid,roleid) 第二,不可能在典型的SQL語句中創建動態數量的列。但它可能通過使用存儲過程。

這裏工作示例 sqlfiddle