SQl Pivot帮助多个表 [英] SQl Pivot help with multiple tables

查看:64
本文介绍了SQl Pivot帮助多个表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SQL Pivot帮助: 我有三个表,如下所示: 类表:

SQL Pivot Help: I have three tables as follows: Class Table:

ID Name
1   N1
2   N2
3   N3

标记表:

ID  ClassID  Flags
1      1       F1
1      1       F2
1      2       F3
1      3       F1
1      3       F3

会话表:

ID   ClassID  Session
1       1       S1
2       1       S2
3       1       S3
4       2       S2
5       2       S5
6       3       S1
6       3       S2

现在我需要创建一个类似这样的视图:

Now I need to create a view something like this:

类视图:

ID  Name       Flags       Session
1    N1        F1,F2       S1,S2,S3
2    N2          F3          S2,S5
3    N3        F1,F3         S1,S2

推荐答案

最好的方法是在客户端的表示层中创建用逗号分隔的列表.您可以像这样将表连接在一起:

The best approach would be to create the comma separated lists in the presentation layer of the client. You can join the tables together like:

select 
    class.id
,   class.name
,   flags.flags
,   session.session
from class
left join flags on flags.classid = class.id
left join session on session.classid = class.id

尽管数据库并不是要格式化数据,但是大多数数据库都支持某种生成逗号分隔列表的方式.例如,在MySQL中,您可以使用group_concat:

Although databases are not meant to format data, most databases support some way of generating comma separated lists. For example, in MySQL, you can use group_concat:

select 
    class.id
,   class.name
,   group_concat(flags.flags separator ',')
,   group_concat(session.session separator ',')
from class
left join flags on flags.classid = class.id
left join session on session.classid = class.id
group by class.id, class.name

如果您使用的是其他DMBS,请将其添加到您的问题中.

If you're using another DMBS, please add it to your question.

这篇关于SQl Pivot帮助多个表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆