select * from tb1 union select * from tb2;
解决方案 »
- 菜鸟提问题,请大侠指教!!在线等
- 用oracle中的OMS实现备份的管理
- in out存储过程如何调用
- tnsnames.ora 和 listener.ora 和 li 以及hosts 配置问题 ???
- 怎么调用存储过程的ref cursor类型输出参数返回的内容
- 一个简单的问题
- 如何在cogons里面实现distinct,非常急
- 高分,请问XP上能安装orcale9i的什么版本?个人,标准??要服务(server)
- oracle数据库连接问题
- 数据库启动实例强制断开 ora-600
- 怎样用随机数?
- 求救:最简单的select * from table在sql*plus里都执行不起来。老是‘ORA-00942: 表或视图不存在’
请各位兄台赐教:oracle中的两个表的全联结查询语法怎么写?
例如:
表 tb1
字段 A B C D表 tb2
字段 E F k G其中tb1中的B字段与tb2中的K字段一样的,怎么写全联结语句?
我要得到的结果是:
A B C D G谢谢!
那就不是全联结了!
表 tb1
字段 A B C D
1 a sa ab
2 b sa cg
3 c pq eg
4 d li gy
5 e ki cd
6 f gd wq表 tb2
字段 E F k G
3 45 a 3s
user 79 d 6d
pwd ef b hj
s9s ud g 32
8s 91 k 3u
js os f js
ks 0s q op 我要得到的结果是
A B C D G
1 a sa ab 3s
2 b sa cg hj
3 c pq eg
4 d li gy 6d
5 e ki cd
6 f gd wq js
g 32
k 3u
q op
用普通连接肯定不行,应该用全联结,可我用前面freddy2003() 大哥教的union老是出错,错误提示为:
ORA-01789:查询块具有不正确的结果列数。
请大哥们赐教!小弟先谢谢了谢谢
tb2.k=tb1.k(+)
用做连接或右连接都会产生数据丢失。的不到我要的结果呀,这个是做统计用的系统设计。
比如中国联通的各个营业厅(比如B字段)做卖号(比如D字段)为tb1,tb2为营业厅编号(比如K字段)和收费统计(比如我要的G字段)
好比:
表tb1 表tb2
营业厅编号(B) 卖C网号个数 营业厅编号(K) 一天营业额(G)
123 25 123 3287.00
124 32 125 5975.00
125 78 126 10888.00
127 12 130 730.00
129 108 178 3250.00我要根据以上两个表统计出这个结果:总不能他卖了号,而没有营业额(话费收缴)就不统计吧,或者是他只收了话费而没有卖出号码就也把他丢了吧!我试了,用左连接或右连接都会导致数据丢失,就是上面说的两种丢弃。
营业厅编号(B) 卖C网号个数 一天营业额(G)
123 25 3287.00
124 32
125 78 5975.00
126 10888.00
127 12
129 108
130 730.00
178 3250.00
select * from a full join b on a.f1 = b.f1
也不是我要的结果呀!
就得出了营业额呀
卖号没有了
SELECT * FROM TAB1 UNION (SELECT * FROM TAB2)ORACLE的文档上面说,他是以第一个查询输出的记录集字段的先后顺序,依据它们的字段类型和第2个查询输出的记录集字段的类型,如果需要转换则先转换,然后再进行值比较的.我觉得应该是这样写.
SELECT tb1.a,tb1.b,tb1.c,tb1.d,tb2.g from tb1 where tb1.b exists in (select tb1.b from tb1 union all select tb2.k from tb2);