2

SQL に 2 つのテーブルがあります。

ユーザー :

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

役割:

roleid    desc
1         copy
2         delete
3         move

今、私はこのコマンドを使用して、ユーザー権限を持つユーザーを選択します

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

SQL テーブル (ロール テーブル) を構築することが可能かどうかを知りたいのですが、それは各ユーザーのロール ID の数を動的にすることです。何かのようなもの:

ユーザー :

id    name     roleid roleid2 roleid3
1     David    1      2       3
2     Sean     2   
3     Joe      1      3
4

2 に答える 2

1

関連エンティティを使用して、と の間の多対多の関係に対処しUsersますRoles。テーブル内の複合主キーUserRoleはロールの重複割り当てを防止し、テーブルを参照する外部キーUsersRoles参照整合性を維持します。

サンプル実装については、SQL フィドルを参照してください。

于 2013-02-04T22:03:20.830 に答える
0

最初は、多対多の関係を使用することをお勧めします。三番目のテーブルを意味します: UsersRoles (userid,roleid) 第二に、典型的な SQL ステートメントで動的な数の列を作成することは不可能です。しかし、ストアドプロシージャを使用することで可能です。

ここに作業例 sqlfiddleがあります

于 2013-02-04T21:26:15.027 に答える