如果这样,怎么样写sql效率高?(马上给分)
比如有很多个表,都是时间 某数据,想把它们连接成一张表,什么样写效率高呢?
比如:
A表是
时间 成本
2007-01 70000
2007-02 47000
2007-03 600000
B表是
时间 收入
2007-01 470000
2007-02 17000
2007-03 880000
C表是
时间 纳税额
2007-01 4000
2007-02 1000
2007-03 26600
D表
E表
F表 …… (有二十张表)
想显示成:
时间 成本 收入 纳税额 DD EE FF GG HH
2007-01 70000 470000 4000 0 ..
2007-02 47000 17000 1000 99
2007-03 600000 880000 26600 60
应该怎么写呢?
------解决方案--------------------看来是的!
看强人出现!
------解决方案--------------------1 查询,每个表都和A表关联要left out join
2
建立一个临时表,临时表 temp_table字段为 time,a,b,c,d,e 等需要查询的字段
循环 A表
插入数据到临时表 temp_table
然后查询b表中,是不是有时间为A表中时间的字段,如果有update temp_table set b = (select b.收入 from b where b.time = a.time)
然后c表,d表...
最后查询临时表temp_table
------解决方案--------------------一楼的写法不对,会丢数据.
首先要找出一个驱动表,即时间最全的表,以该表为依据去右外连其它表,这样可以保证所有数据不丢失,并且可使用时间字段索引.
如果表A中的时间最全,则
select a.时间,a.成本,b.收入,c...... from
a,b,c,d,e,f....
where a.时间=b.时间(+)
and a.时间=c.时间(+)
and a.时间=d.时间(+)
....