使用SELECT进行INSERT / UPDATE

时间:2015-06-10 16:05:14

标签: sql ms-access

我有3张桌子:

  

成员(Cols:memId,startDate)

     

历史(Cols:histId,memId,info)

     

SubHistory(Cols:subHistId,histId,startDate,type)

我需要在带有MS Access的成员startDate上插入SubHistory startDate

我正在使用以下代码:

What I expected (based on running the build with cmd):
test = foo;bar
test2 = foo;bar

What I actually got:
test = "foo;bar";test2="foo;bar"

为什么不工作? Access一直向我询问Members.memId。还有另外一种方法吗? 并非所有会员都有开始日期。

2 个答案:

答案 0 :(得分:3)

当您检查该查询的SELECT部分时,WHERE子句有问题...

WHERE sh.type = 46 AND m.memId = Members.memId

此时,Access无法使用名为 Members 的数据源,因为您在FROM子句中将其别名为 m 。并且它无法将该名称解析为INSERT INTO Members中的成员

因此,访问猜测Members.memId必须是您没有提供值的参数,然后要求您提供该参数值。

因此,为了让Access了解您正在讨论该字段值,您需要使用别名而不是表名来引用它。

但是,如果你做出改变......

WHERE sh.type = 46 AND m.memId = m.memId

......条件m.memId = m.memId似乎毫无用处。也许你打算从其他一个表中引用memId

答案 1 :(得分:1)

Members.memId是Members表的主键吗? (如果不是,可能应该)。如果是,那么将不允许NULL值,因此您也需要将其作为INSERT的一部分传递。