Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将关系数据分组到单个数据表中_C#_Sql_Winforms_Oracle_Datagridview - Fatal编程技术网

C# 将关系数据分组到单个数据表中

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

我正在用WinC开发一个系统

我有两个关系表:

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