2011-02-08 91 views
2

我试图从3个表中插入数据从CSV文件中保存数据到一个有意义的仓库表,但不知道我的语法是否正确。从多个表插入

insert into warehouseTBL 
select a.recordNum, b.fieldA, b.fieldB, c.fieldC, c.fieldD, 
    from ctrTable a, tableB b, tableC c 
where a.recordNum = b.recordNum 
    and a.recordNum = c.recordNum 
    and a.someField = b.someField 
    and a.someField = c.someField 

所以我应该使用嵌套选择FROM子句,以便它看起来像这样:

from ctrTable a, (
     select * 
      from tableB, tableC, 
     where tableB.recNum = tableC.recNum 
     ) as d, 
where a.recNum  = d.recNum 

是否语法甚至有意义吗?

+0

在这个问题放在各自的Oracle错误。 – zerkms 2011-02-08 07:47:19

+2

语法看起来不错,尽管1)最好明确地列出插入表“插入到warehouseTBL(recordnum,fieldA,fieldB ...)”中的列,并且2)在你的选择中使用ANSI连接从ctrTable的内部在a.recordNum上加入tableB b = b.Recordnum等 – StuartLC 2011-02-08 07:50:25

回答

4

使用此查询插入行,

insert into warehouseTBL 
select recordNum, fieldA, fieldB, fieldC,fieldD from 
(select a.recordNum, b.fieldA, b.fieldB, c.fieldC, c.fieldD, 
    from ctrTable a, tableB b, tableC c 
where a.recordNum = b.recordNum 
    and a.recordNum = c.recordNum 
    and a.someField = b.someField 
    and a.someField = c.someField)p