再问一个问题---关于外连接的---请教高手

[复制链接]
查看11 | 回复9 | 2007-9-26 17:05:46 | 显示全部楼层 |阅读模式
现在有2张表关联
A
减免信息ID人员地址TEL 受理人员受理单位减免日期起 减免日期止
B表
缴费ID人员 缴费额 月份

我现在用
A表的人员和认定日期才能在B表中的查询到唯一的减免缴费额
A.人员=B.人员
and
A.减免日期起 <=b.月份 andA.减免日期止 <=b.月份
问题出现了,我现在要查询所有A表的记录,而且,如果有对应B标中的减免缴费额就取出来,要是没有就为空
请问,我怎么加上外连接?

-----错误SQL
------------------------------------
selectA.减免信息ID,A.人员,A.地址,A.TEL ,A.受理人员,A.受理单位,A.减免日期起 ,A.减免日期止 ,B.缴费额
from
A,B
where
A.人员=B.人员(+)
and
A.减免日期起 <=b.月份 andA.减免日期止 <=b.月份
这样只能查询到A表的部分记录

怎么解决阿?
我想知道SQL像上边的SQL能不能用外连接即(+)来做?
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
最初由 myfriend2010 发布
[B]现在有2张表关联
A
减免信息ID人员地址TEL 受理人员受理单位减免日期起 减免日期止
B表
缴费ID人员 缴费额 月份

我现在用
A表的人员和认定日期才能在B表中的查询到唯一的减免缴费额
A.人员=B.人员
and
A.减免日期起 <=b.月份 andA.减免日期止 <=b.月份
问题出现了,我现在要查询所有A表的记录,而且,如果有对应B标中的减免缴费额就取出来,要是没有就为空
请问,我怎么加上外连接?

-----错误SQL
------------------------------------
selectA.减免信息ID,A.人员,A.地址,A.TEL ,A.受理人员,A.受理单位,A.减免日期起 ,A.减免日期止 ,B.缴费额
from
A,B
where
A.人员=B.人员(+)
and
A.减免日期起 <=b.月份 andA.减免日期止 <=b.月份
这样只能查询到A表的部分记录

怎么解决阿?
我想知道SQL像上边的SQL能不能用外连接即(+)来做? [/B]

selectA.减免信息ID,A.人员,A.地址,A.TEL ,A.受理人员,A.受理单位,A.减免日期起 ,A.减免日期止 ,B.缴费额
from
A
left join b on A.人员=B.人员
and
A.减免日期起 <=b.月份 andA.减免日期止 <=b.月份
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
最初由 myfriend2010 发布
[B]现在有2张表关联
A
减免信息ID人员地址TEL 受理人员受理单位减免日期起 减免日期止
B表
缴费ID人员 缴费额 月份

我现在用
A表的人员和认定日期才能在B表中的查询到唯一的减免缴费额
A.人员=B.人员
and
A.减免日期起 <=b.月份 andA.减免日期止 <=b.月份
问题出现了,我现在要查询所有A表的记录,而且,如果有对应B标中的减免缴费额就取出来,要是没有就为空
请问,我怎么加上外连接?

-----错误SQL
------------------------------------
selectA.减免信息ID,A.人员,A.地址,A.TEL ,A.受理人员,A.受理单位,A.减免日期起 ,A.减免日期止 ,B.缴费额
from
A,B
where
A.人员=B.人员(+)
and
A.减免日期起 <=b.月份 andA.减免日期止 <=b.月份
这样只能查询到A表的部分记录

怎么解决阿?
我想知道SQL像上边的SQL能不能用外连接即(+)来做? [/B]

当然可以,这样试试:
selectA.减免信息ID,A.人员,A.地址,A.TEL ,A.受理人员,A.受理单位,A.减免日期起 ,A.减免日期止 ,B.缴费额
from
A,B
where
A.人员=B.人员(+)
and
A.减免日期起 <=b.月份(+) andA.减免日期止 <=b.月份(+)
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
2楼的确实可以用吗?
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
好像不行吧?
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
最初由 myfriend2010 发布
[B]好像不行吧? [/B]

只是不同的写法而已,行不行,你不是可以自己测试的。
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
~~~~~我试了不行~~~~~~~~~~~~~~~~~~~~~~~~
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
那样关联以后数据量少了~那样只能查询到A、B的交集
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
怎么测试的?
把测试的过程贴出来!
回复

使用道具 举报

千问 | 2007-9-26 17:05:46 | 显示全部楼层
Oracle9I可以用LEFT JOIN,ORALCE8以下的就不行的只能用加号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行