x******m 发帖数: 736 | 1 table1
id col1 col2 col3...
table2
col_id col_name
1 col1
2 col2
3 col3
现在想用sql生成table3,
id col_name col_value
其中id,col_vaule来自于table1,col_name来自于table2.
多谢。 |
s**********o 发帖数: 14359 | |
x******m 发帖数: 736 | 3 sorry没说清楚。
要生成的table3中的col不是按照原来的顺序 是乱的 而且还有一列来显示col id 所以
需要query table2以获取col id
【在 s**********o 的大作中提到】 : PIVOT一下就可以了
|
n***l 发帖数: 143 | 4 I am new too. Try use create view:
create view table3
select id, col_name, col-value
from table1
join table 2
where table1.id = table2.col_id |
x******m 发帖数: 736 | 5 呵呵,你没看清楚我问的问题。id和col id不是一个东西。
【在 n***l 的大作中提到】 : I am new too. Try use create view: : create view table3 : select id, col_name, col-value : from table1 : join table 2 : where table1.id = table2.col_id
|
B*****g 发帖数: 34098 | 6 什么数据库?答题有大包子吗?
【在 x******m 的大作中提到】 : table1 : id col1 col2 col3... : table2 : col_id col_name : 1 col1 : 2 col2 : 3 col3 : 现在想用sql生成table3, : id col_name col_value : 其中id,col_vaule来自于table1,col_name来自于table2.
|
x******m 发帖数: 736 | 7 工作中遇到的db 我不是专门的db admin只是兼顾管理一下,所以不是很熟SQL。我看看
我还有没有包子啊
【在 B*****g 的大作中提到】 : 什么数据库?答题有大包子吗?
|
B*****g 发帖数: 34098 | 8 oracle or sql server or mysql?
【在 x******m 的大作中提到】 : 工作中遇到的db 我不是专门的db admin只是兼顾管理一下,所以不是很熟SQL。我看看 : 我还有没有包子啊
|
x******m 发帖数: 736 | 9 postgresql
【在 B*****g 的大作中提到】 : oracle or sql server or mysql?
|
B*****g 发帖数: 34098 | 10 只会oracle的
【在 x******m 的大作中提到】 : postgresql
|
|
|
s**********o 发帖数: 14359 | 11 你的TABLE1的各个COLUMN NAME是什么呢,我觉得TABLE1本身就有问题
TABLE 1,如果是这样一个TABLE,本身就没有意义
ID COL1 COL2 COL3
1 小甲 老乙 大丙
2 小A 老B 大C
3 张三 李四 王二麻子
显然,虽然叫COL1, COL2. COL3,但肯定是有些联系,其实是这样的
COL1=学生
COL2=老师
COL3=家长
其实TABLE1应该是这样
ID 学生 老师 家长
1 小甲 老乙 大丙
2 小A 老B 大C
3 张三 李四 王二麻子
如果TABLE1建好的话,TABLE2和TABLE3都没什么意义,如果你是CLEANUP
直接SELECT COL1 AS ID1, COL2 AS ID2, COL3AS ID3 FROM TABLE1
因为是DDL,你的COLUMN数肯定是一定的,不可能是N个,只能一一列举
不过合并后的TABLE3还是没什么意义,因为ID1 ID2本身没有意义
【在 x******m 的大作中提到】 : sorry没说清楚。 : 要生成的table3中的col不是按照原来的顺序 是乱的 而且还有一列来显示col id 所以 : 需要query table2以获取col id
|
B*****g 发帖数: 34098 | |
x******m 发帖数: 736 | 13 errrrrrrrrrrrrrr
在初级的DBA,也不会这么命名吧。我只是简单说col1,并不是column1的header就是
col1.哪个DBA要是这么命名,估计离丢工作也不远了。。。。
这样说吧,table1的attributes在数据库中被分成好几类,比如,身高,体重属于body
index,心跳,血压属于health index(table2)。
要生成的table3,就是id attribute 在加上 attribute的类别。
其实这就是个sql问题,跟这些都无关。
实在不行,我就把table output出来,几行python code就搞定。就是想借这个机会看
看sql有没有好的解法。
【在 s**********o 的大作中提到】 : 你的TABLE1的各个COLUMN NAME是什么呢,我觉得TABLE1本身就有问题 : TABLE 1,如果是这样一个TABLE,本身就没有意义 : ID COL1 COL2 COL3 : 1 小甲 老乙 大丙 : 2 小A 老B 大C : 3 张三 李四 王二麻子 : 显然,虽然叫COL1, COL2. COL3,但肯定是有些联系,其实是这样的 : COL1=学生 : COL2=老师 : COL3=家长
|
s**********o 发帖数: 14359 | 14 这个可以替代PIVOT,但是比较慢
【在 B*****g 的大作中提到】 : google "query_to_xml"
|
B*****g 发帖数: 34098 | 15 你来写个pivot来解决楼主问题
【在 s**********o 的大作中提到】 : 这个可以替代PIVOT,但是比较慢
|
w****w 发帖数: 521 | 16 用python或其他语言,根据表2产生n个insert into select语句,再一起跑。 |
s**********o 发帖数: 14359 | 17 原来不就是这样吗
ID 身高 体重 职业
1 1米八 300斤 学生
2 1米七 200斤 老师
然后PIVOT成这样,TABLE2是干嘛的?你能不能形象点?这像是个等级问题
但没有列子不好懂
1 身高,1米八
1 体重,300斤
1 职业,学生
2 身高,1米七
2 体重,200斤
2 职业,老师 |
x******m 发帖数: 736 | 18 table2用来表明table1中每个col的category,比如你的table
id col value col_id category
1 身高,1米八 3 body_index
1 体重,300斤 4 body_index
1 职业,学生 1 other_index
2 身高,1米七 3 body_index
【在 s**********o 的大作中提到】 : 原来不就是这样吗 : ID 身高 体重 职业 : 1 1米八 300斤 学生 : 2 1米七 200斤 老师 : 然后PIVOT成这样,TABLE2是干嘛的?你能不能形象点?这像是个等级问题 : 但没有列子不好懂 : 1 身高,1米八 : 1 体重,300斤 : 1 职业,学生 : 2 身高,1米七
|
a******t 发帖数: 125 | |
c****s 发帖数: 10 | 20 这个应该是unpivot。
sql server的话
select * from (
SELECT ID, cname , cvalue
FROM
(SELECT *
FROM a1) p
UNPIVOT
(cvalue FOR cname IN
(c1,c2,c3)
)AS unpvt
) b where cname in ( select cname from a2)
【在 B*****g 的大作中提到】 : 你来写个pivot来解决楼主问题
|