将关系数据分组到单个Datatable中

时间:2015-05-21 15:23:23

标签: c# sql winforms oracle datagridview

我正在使用WinForms C#开发一个系统。

我有两个关系表:

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

有什么建议吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用“case switch”将行转换为列。在实际的选择查询中,您可以动态构造列表。 例如: -

SQL> select id,name from user_profile;

    ID NAME
     1 U1
     2 U2

SQL> select id,pname from per order by 1;

    ID PNAME
     1 A
     1 B
     2 C

SQL> select distinct u.name user_name, case when p.pname='A'then p.pname else null end permission1, case when p.pname='B' then p.pname else null end permission2 from user_profile u, per p where u.id=p.id order by 1;

USER_NAME            PERMISSION1          PERMISSION2
-------------------- -------------------- --------------------
U1                   A
U1                                        B
U2