现有一名单表a,包含纳税人编码,表不大,可能只有几条记录。数据表b,有纳税人各年分税种税款信息,有的有效,有的无效。表很大,记录在一亿条以上。另外名单表a中的纳税人,可能在表b中没有记录(有登记信息,没有税款缴纳记录)。那么,怎么取表A中的纳税人的税款信息?select a.nsbm, sum(税额)
from a,
(select b.nsbm, 税额 from b
where yxbz='Y' and 属期 ) c
where a.nsbm=c.nsbm(+)
group by a.nsbm肯定是可以的,但是感觉这么做速度很慢。远不如下面这个。select a.nsbm, sum(税额)
from a, b
where a.nsbm=b.nsbm
and b.yxbz='Y' and b.属期但是下面这个又会丢失在b中没有记录的单位。请问一下该怎么办?
from a,
(select b.nsbm, 税额 from b
where yxbz='Y' and 属期 ) c
where a.nsbm=c.nsbm(+)
group by a.nsbm肯定是可以的,但是感觉这么做速度很慢。远不如下面这个。select a.nsbm, sum(税额)
from a, b
where a.nsbm=b.nsbm
and b.yxbz='Y' and b.属期但是下面这个又会丢失在b中没有记录的单位。请问一下该怎么办?
from a left join b
on a.nsbm=b.nsbm
where b.yxbz='Y' and b.属期
from a , b
on a.nsbm=b.nsbm(+)
where b.yxbz='Y' and b.属期 这样做的话会丢记录的。看来LEFT JOIN 是比(+)好呀。
from a, b
where a.nsbm=b.nsbm
and b.yxbz='Y' and b.属期...) c
where a.nsbm=c.nsbm(+)
LEFT JOIN和 (+)功能是一样的,做左外连接时+放到等号的右边。
+ 放在哪个表的后面,就会将另一表中所有记录显示出来。