線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2802
推到 Plurk!
推到 Facebook!

如何合并四张表的数据成一张表?

答題得分者是:christie
nimo
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-11-22 21:37:12 IP:221.218.xxx.xxx 訂閱
各位大侠:

有一个问题,想请教。

问题:有四张表,每张表中各有不同的字段,我想把这四张表进行合并,成一张表,该如何实现呢?

表1的字段为:
s1, h1, p1, m1, f1, n1

表2的字段为:
s1, p1, d1

表3的字段为:
s1, p1, v1

表4的字段为:
s1, t1, d1

我最终想得到的结果是:合并所有的重复字段,最后生成一张大表,这张表字段为:
s1, h1, p1, m1, f1, n1, d1, v1, t1

谢谢!
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-11-23 09:07:37 IP:203.73.xxx.xxx 訂閱
舉一例
SELECT A.*,T4_FLD_T
(
Select a.*, T3_V
(select T1_S,T1_H,T1_P,T1_M,T1_F,T1_N,T2_D from T1,T2 where T1_S=T2_S( )) a, T3
where a.T1_S=T3_S( )
) a, T4

Where a.T1_S = T4_FLD_S( )
------
What do we live for if not to make life less difficult for each other?
nimo
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-11-23 13:16:52 IP:219.142.xxx.xxx 訂閱
Christie,

谢谢您的回复。用下面的思路,我运行了一下,得到的结果数小于我实际所需要的内容。

对不起,可能是我的意思没有表达清楚。

在合并4张表的过程中,最后一张总表中某些行记录中的部分字段可能为空(见下面的示例),这样该如何实现呢?
========================
S, H, P, M, F, N, D, V, T
-----------------------------------------
s1, h1, p1, m1, f1, n1, d1, v1, t1
s1, , p2, m2, f2, n2, d2, v2, t2
s1, h3, p3, m3, f3, n3, d3, , t3
s1, , p4, m4, f4, n4, d4, v4, t4

说明:行数据中某些列字段可能无值,且S1列中所有的四张表中数据都相同,这该如何实现呢?

希望得到您的继续指点。

非常感谢!

===================引 用 christie 文 章===================
舉一例
SELECT A.*,T4_FLD_T
(
Select a.*, T3_V
(select T1_S,T1_H,T1_P,T1_M,T1_F,T1_N,T2_D from T1,T2 where T1_S=T2_S( )) a, T3
where a.T1_S=T3_S( )
) a, T4

Where a.T1_S = T4_FLD_S(
編輯記錄
nimo 重新編輯於 2007-11-23 13:18:05, 註解 無‧
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-11-23 14:47:23 IP:61.59.xxx.xxx 訂閱
一步一步來:
Select Tab1.S,Tab1.H,Tab1.P,Tab1.M,Tab1.F,Tab1.N,Tab2.D from Tab1,Tab2 where Tab1.S=Tab2.S( )
------
What do we live for if not to make life less difficult for each other?
nimo
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-11-23 19:01:05 IP:61.49.xxx.xxx 訂閱
Christie,

您的回复好像不全?

谢谢您的指点!


===================引 用 christie 文 章===================
一步一步來:
Select Tab1.S,Tab1.H,Tab1.P,Tab1.M,Tab1.F,Tab1.N,Tab2.D from Tab1,Tab2 where Tab1.S=Tab2.S( )
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-11-23 22:56:51 IP:218.171.xxx.xxx 訂閱
何不貼上您的SQL來看看?

ps:SELECT * From Tab1..更佳
------
What do we live for if not to make life less difficult for each other?
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-11-24 13:55:58 IP:218.171.xxx.xxx 訂閱
請再試試
Select T.S,T.H,T.P,T.M,T.F,T.N, Tab2.D from(
Select T.S,T.H,T.P,T.M,T.F,T.N From(
SELECT DISTINCT S FROM (
SELECT S FROM Tab1
UNION ALL
SELECT S FROM Tab2
UNION ALL
SELECT S FROM Tab3
UNION ALL
SELECT S FROM Tab4
) a, Tab1 T where a.S=Tab1.S( )
)T, Tab2 where T.S= Tab2.S( )
並且依範例以⇒Left outer join將 Tab3 , Tab4 Join起來
------
What do we live for if not to make life less difficult for each other?
編輯記錄
christie 重新編輯於 2007-11-26 08:19:16, 註解 無‧
nimo
一般會員


發表:5
回覆:9
積分:2
註冊:2007-11-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-12-01 23:29:53 IP:221.222.xxx.xxx 訂閱
christie,

谢谢!已经解决。
系統時間:2024-04-16 22:22:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!