JOIN中的几个ON子句在Access中无法正常工作

时间:2015-09-16 09:39:15

标签: sql ms-access sql-update ms-access-2010

这个问题真的很奇怪。下面的代码给出了错误,即不支持的JOIN语句

update ((s2t
left join tables on
S2T.[table] = Tables.TableName)
left join Columns on 
(S2T.[column] = Columns.ColumnName))

left  join s2t_source on
(   s2t_source.source_table = "money")  
set s2t.source_id = 1;

但后来我用这种方式更改了第三个JOIN的连接条件,它开始起作用了:

update ((s2t
left join tables on
S2T.[table] = Tables.TableName)
left join Columns on 
(S2T.[column] = Columns.ColumnName))
inner join s2t_source on
(    s2t_source.source_table = S2T.[table])

set s2t.source_id = 1;

我做错了什么?首先,我认为与ON clauses相关的问题是使用以前加入的表中的信息。然而,我找到similar code,这似乎是有效的。我很困惑。这怎么可能,改变ON子句会使查询失败?

upd1 :我不认为这个问题与数据类型有关。

Text datatype:s2t_source.source_table,s2t_source.source_field,S2T。[table],S2T。[column],Tables.TableName,Columns.ColumnName

Integer datatype:Tables.id,Columns.id,s2t.source_id

upd2 :我正在使用Access 2010.在这3个表中,名为TablesColumns的表之间只有1个外键

Tables.id = Columns.table_id

1 个答案:

答案 0 :(得分:0)

s2t_source.source_table = "money"

...不是JOIN条件而是WHERE条件。右侧站点变量应包含先前表/联接的内容。

不知道上下文,我只能猜测一个解决方案:

update ((s2t
left join tables on
S2T.[table] = Tables.TableName)
left join Columns on 
(S2T.[column] = Columns.ColumnName))
left join s2t_source on
(    s2t_source.source_table = S2T.[table])
set s2t.source_id = 1
WHERE s2t_source.source_table = "money";