两表合并问题
现有两个表(A和B),字段相同,资料有一部分不同.我想合并取两个表中的资料(以PS,DT为条件)
A表资料:
ps dt rk sl bz
11 aa kk 20 ss
22 bb df 30 hf
33 cc 1s 60 s23
B表资料:
ps dt rk sl bz
11 aa kk 66 ss
22 bb df 33 hf
44 dd fd 90 hj
我想要的结果:
ps dt rk sl bz
11 aa kk
22 bb df
33 cc 1s s23
44 dd fd hj
只要ps,dt相同的就显示一条,不同的都显示,不知怎么实现?
用UNION进行合并时,资料有重复.请教各位高手帮忙.
问题点数:50、回复次数:16Top
1 楼hqhhh(枫叶)回复于 2005-08-01 17:42:15 得分 40
1.
select distinct ps, dt
from
(select * from a
union
select * from b) x
2.后面的两个字段sl, bz取值有什么要求?若不同,是取哪个值呢?Top
2 楼qft516(開拓者)回复于 2005-08-01 18:20:48 得分 0
2.后面的两个字段sl, bz取值有什么要求?若不同,是取哪个值呢?
后面的两个字段sl, bz不用取值。
Top
3 楼hqhhh(枫叶)回复于 2005-08-02 08:06:59 得分 0
select distinct ps, dt,'' as sl, '' as bz
from
(select * from a
union
select * from b) xTop
4 楼qft516(開拓者)回复于 2005-08-02 08:39:38 得分 0
我用的是Access數據庫。上面的代碼好象還是通不過。Top
5 楼luckyboy97(幸运男孩)回复于 2005-08-02 08:57:17 得分 0
select ps, dt, rk, sl, bz from A Where ps not in (select ps from B)
select '''', ps, dt, rk, sl, bz from A Where ps not in (select ps from B)
union select '''',Sum(ps),Sum(dt),Sum(rk),Sum(sl),Sum(bz) from A Where ps not in (select ps from B)
Top
6 楼xixuemao(钱不是问题,问题是没钱)回复于 2005-08-02 09:09:20 得分 0
晕,好像思路有问题吧。
数据本身是两条,你非放到一条里怎么可能?
除非数据是有什么关系
比如把ps和dt相同的记录中其它字段值相加或者什么关系
如果没有怎么可能放在一条显示呢。Top
7 楼qft516(開拓者)回复于 2005-08-02 09:20:34 得分 0
思路是沒有问题的。我只取PS和DT的資料﹐其它的不取數據﹐只要字段就行了。
像select distinct ps, dt,'' as sl, '' as bz from a是行的﹐但只是一個表﹐我要的是在兩個表中取資料條數。Top
8 楼qft516(開拓者)回复于 2005-08-05 09:10:10 得分 0
只以PS和DT为条件取資料显示出来就行了﹐重复的只显示一条。其它的字段不取值﹐只要显示字段名称就行了。就如下结果:
ps dt rk sl bz
11 aa
22 bb
33 cc
44 dd
Top
9 楼hqhhh(枫叶)回复于 2005-08-05 11:00:28 得分 0
你分两步操作:
1.先生成一个临时表,
2.对此临时表进行查询
Top
10 楼wtg476(起飞)回复于 2005-08-05 11:03:15 得分 0
1.先生成一个临时表,
2.对此临时表进行查询
Top
11 楼hanlin2004(道德守望者)回复于 2005-08-05 11:20:16 得分 10
select a.* from a,b where a.ps = b.pa and a.dt = b.dt
union
select a.* from a,b where not (a.ps = b.pa and a.dt = b.dt)
union
select b.* from a,b where not (a.ps = b.pa and a.dt = b.dt)
楼主测试一下是否可以Top
12 楼hanlin2004(道德守望者)回复于 2005-08-05 11:23:38 得分 0
//////////只以PS和DT为条件取資料显示出来就行了﹐重复的只显示一条。其它的字段不取值﹐只要显示字段名称就行了。就如下结果:
ps dt rk sl bz
11 aa
22 bb
33 cc
44 dd
如果这样的话很好办:
select distinct * from
(select ps,pt,'' as sl, '' as bz from a
union
select ps,pt,'' as sl, '' as bz from a) tTop
13 楼hanlin2004(道德守望者)回复于 2005-08-05 11:25:22 得分 0
sorry
如果这样的话很好办:
select distinct * from
(select ps,pt,'' as rk,'' as sl, '' as bz from a
union
select ps,pt,'' as rk,'' as sl, '' as bz from b) t
Top
14 楼qft516(開拓者)回复于 2005-08-08 14:35:32 得分 0
不好意思﹐這几天出差去了﹐沒有看帖。
to:hanlin2004(乘千里风破万里浪)
你的意思跟hqhhh(枫叶)開始說的一樣。
to:hqhhh(枫叶)
現在看來只有按你所說的分兩步了。其它不知道還有什么更好的辦法﹖Top
15 楼qft516(開拓者)回复于 2005-08-08 14:35:48 得分 0
不好意思﹐這几天出差去了﹐沒有看帖。
to:hanlin2004(乘千里风破万里浪)
你的意思跟hqhhh(枫叶)開始說的一樣。
to:hqhhh(枫叶)
現在看來只有按你所說的分兩步了。其它不知道還有什么更好的辦法﹖Top
16 楼qft516(開拓者)回复于 2005-08-09 13:20:27 得分 0
謝謝大家參與Top




