以前没有遇到过这种情况,要做的时候有点懵。 望老哥指点,多谢!
有这样一个需求,一个表单主表,一个扩展列表,查询的时候要把扩展列表中的多行转成主表多列。
比如
id | type | title |
1 | 1 | 表单 1-1 |
2 | 1 | 表单 1-2 |
3 | 2 | 表单 2-1 |
4 | 2 | 表单 2-2 |
id | formid | name | title | value |
1 | 1 | ext_a | 工龄 | 18 |
2 | 1 | ext_b | 职称 | 副级 |
3 | 2 | ext_a | 工龄 | 20 |
4 | 2 | ext_b | 职称 | 正级 |
5 | 3 | ext_2a | 字段 1 | 值 1 |
6 | 3 | ext_2b | 字段 2 | 值 2 |
7 | 3 | ext_2c | 字段 3 | 值 3 |
8 | 4 | ext_2a | 字段 1 | 值 21 |
9 | 4 | ext_2b | 字段 2 | 值 22 |
10 | 4 | ext_2c | 字段 3 | 值 23 |
查询时,会根据 dt_zhubiao 表的 type 来查询,type 字段一样时,dt_kuozhanbiao 表条数和 name 都会一致,value 不一致。
想要的结果如下:
查询 type=1 时,select * from dt_zhubiao where type = 1 ...
id | type | title | ext_a | ext_b |
1 | 1 | 表单 1-1 | 18 | 副级 |
2 | 1 | 表单 1-2 | 20 | 正级 |
查询 type=2 时,select * from dt_zhubiao where type =2 ...
id | type | title | ext_2a | ext_2b | ext_2c |
3 | 2 | 表单 2-1 | 值 1 | 值 2 | 值 3 |
4 | 2 | 表单 2-2 | 值 21 | 值 22 | 值 23 |
那么问题来了,基于 select * from dt_zhubiao where type = ? 基础 sql 语句,如何生成这种查询结果 ?
之前在 SQL Server 里试过 join、union 都没有实现出来,困扰许久,望老哥解惑( MYSQL MSSQL 都可以)!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.