比如有很多个表,都是时间 某数据,想把它们连接成一张表,什么样写效率高呢?比如: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.   

    是不是只能where a.时间=b.时间(+) and b.时间=c.时间(+) and c .时间(+)=d.时间(+) and d.时间(+)=e.时间(+) and e.时间(+)=f.时间(+) ....
      

  2.   

    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
      

  3.   

    一楼的写法不对,会丢数据.
    首先要找出一个驱动表,即时间最全的表,以该表为依据去右外连其它表,这样可以保证所有数据不丢失,并且可使用时间字段索引.
    如果表A中的时间最全,则 
    select a.时间,a.成本,b.收入,c...... from 
    a,b,c,d,e,f....
    where a.时间=b.时间(+)
    and a.时间=c.时间(+)
    and a.时间=d.时间(+)
    ....
      

  4.   

    where a.时间=b.时间(+) and b.时间=c.时间(+) and c .时间=d.时间(+) and d.时间=e.时间(+) and e.时间=f.时间(+) ....and 「最后的表」.时间=a.时间(+)