这个问题真的很奇怪。下面的代码给出了错误,即不支持的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个表中,名为Tables
和Columns
的表之间只有1个外键
Tables.id = Columns.table_id
答案 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";