C# 将关系数据分组到单个数据表中
我正在用WinC开发一个系统 我有两个关系表:C# 将关系数据分组到单个数据表中,c#,sql,winforms,oracle,datagridview,C#,Sql,Winforms,Oracle,Datagridview,我正在用WinC开发一个系统 我有两个关系表: USER_PROFILE | ID | NAME | 1 prof1 PERMISSIONS | UPROFILE_ID | PERMISSION | 1 abc 1 acb 1 bca 我需要在屏幕上显示配置文件。 我不知道这是否是最适合我的案例的解决方案,或者如何实施它。我的想法是在DataGridView中显示如下内容: | Pro
USER_PROFILE
| ID | NAME |
1 prof1
PERMISSIONS
| UPROFILE_ID | PERMISSION |
1 abc
1 acb
1 bca
我需要在屏幕上显示配置文件。
我不知道这是否是最适合我的案例的解决方案,或者如何实施它。我的想法是在DataGridView中显示如下内容:
| Profile | Permission1 | Permission2 | Permission3 |
prof1 abc acb bca
有什么建议吗
提前感谢。您可以使用“大小写开关”将行转换为列。在实际的select查询中,可以动态构造列列表。 例如:- SQL>从用户配置文件中选择id、名称 SQL>按1从每个订单中选择id、pname SQL>根据p,从用户配置文件u中选择不同的u.name user_name、case when p.pname='A'然后p.pname else null end permission1、case when p.pname='B'然后p.pname else null end permission2,其中u.id=p.id按1排序
连接表并使用PIVOT构造函数您可以通过SQL或LINQ在数据访问代码中的表上运行连接。我喜欢Randy关于数据输出的PIVOT想法。是否有设置数量的权限?每个人都有相同数量的权限吗?您可能需要在datagridview中动态构造列。是的,列的数量将发生变化,我还需要为列命名。我认为解决方案可能是构建数据表。这样,繁重的逻辑将出现在代码上,而不是查询中。我会用谷歌搜索的,谢谢。有没有关于如何动态处理它的建议?
ID NAME
1 U1
2 U2
ID PNAME
1 A
1 B
2 C
USER_NAME PERMISSION1 PERMISSION2
-------------------- -------------------- --------------------
U1 A
U1 B
U2