关于表的连接(150分)

  • 主题发起人 主题发起人 bluestar_sz
  • 开始时间 开始时间
B

bluestar_sz

Unregistered / Unconfirmed
GUEST, unregistred user!
我有三个表,分别为A、B、C.表的字段都相同,
如A的数据为:
A
aa bb cc
1 100 55
2 22 22
3 12 20
B
aa bb cc
4 50 12
5 22 10
1 10 23
C
aa bb cc
1 33 44
2 11 22
5 22 11
6 11 11
最后合成一个如下的表
aa bb cc bb cc bb cc
1 100 55 10 23 33 44
2 22 22 11 22
3 12 20
4 50 12
5 22 10 22 11
6 11 11
请各位高手指点。
 
首先说明,不能有重名的列
select a.aa,a.bb,a.cc,b.bb b_bb,b.cc b_cc,c.bb c_bb,c.cc c_cc from A a,B b,C c
where a.aa=b.aa and a.aa=c.aa and b.aa=c.aa
 
to louhong,
‘b.bb b_bb,b.cc b_cc,c.bb c_bb,c.cc c_cc ’
什么意思?整段代码你编译过?
 
为了防止重名,b.bb b_bb,b.cc b_cc等的意思是表B的bb,cc分别取别名b_bb,b_cc
 
我编译(access)不能通过,不知道别人,我看不太懂(新手)。
 
建议用存储过程(sql server:经过测试通过)
CREATE PROCEDURE testpro AS
DECLARE @aa char(10)
DECLARE @bb1 char(10)
DECLARE @cc1 char(10)
DECLARE @bb2 char(10)
DECLARE @cc2 char(10)
DECLARE @bb3 char(10)
DECLARE @cc3 char(10)
DECLARE testCursor CURSOR FOR
SELECT DISTINCT aa FROM
(SELECT * FROM test1
UNION
SELECT * FROM TEST2
UNION
SELECT * FROM TEST3) VV
OPEN testCursor
FETCH NEXT FROM testCursor INTO @aa
BEGIN TRANsaction
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
set @bb1=''
set @cc1=''
set @bb2=''
set @cc2=''
set @bb3=''
set @cc3=''
SELECT @bb1=( case when bb='' then '' else bb end),@cc1=( case when cc='' then '' else cc end) FROM test1 WHERE aa=@aa
SELECT @bb2=( case when bb='' then '' else bb end),@cc2=( case when cc='' then '' else cc end) FROM TEST2 WHERE aa=@aa
SELECT @bb3=( case when bb='' then '' else bb end),@cc3=( case when cc='' then '' else cc end) FROM TEST3 WHERE aa=@aa
insert into temp1 select @aa,@bb1,@cc1,@bb2,@cc2,@bb3,@cc3
FETCH NEXT FROM testCursor INTO @aa
END
END
COMMIT TRANsaction
DEALLOCATE testCursor
GO
 
select a.*,b.bb,b.cc,c.bb,c.cc
from a full join b on a.aa=b.aa
full join c on a.aa=c.aa
group by a.aa
 
同意orlen 的看法

."". ."",
| | / /
| | / /
| | / /
| |/ ;-._
} ` _/ / ;
| /` ) / /
| / /_//_//
|/ / |
( ' / '- |
/ `. /
| |
jgs | |
 
to all:
可是我用的是interbase。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
A
回复
0
查看
564
Andreas Hausladen
A
后退
顶部