JOIN 中的几个 ON 子句在 Access 中无法正常工作
Several ON clause in JOIN doesn't work properly in Access
这个问题真的很奇怪。下面的代码给出了错误,存在 unsupportable 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
有关,它使用了刚刚加入 table 的信息。但是后来我发现 similar code,这似乎可行。我很困惑。这怎么可能,更改 ON 子句会使查询失败?
upd1: 我认为问题与数据类型无关。
Text datatype
: s2t_source.source_table, s2t_source.source_field, S2T.[table], S2T.[列], Tables.TableName, Columns.ColumnName
Integer datatype
: Tables.id, Columns.id, s2t.source_id
upd2: 我用的是Access 2010,在这3个table中,table之间只有1个外键,名字叫Tables
和 Columns
Tables.id = Columns.table_id
s2t_source.source_table = "money"
...不是 JOIN 条件而是 WHERE 条件。右边的站点变量应该包含前面 tables/joins 的内容。
不知道上下文,只能猜解:
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";
这个问题真的很奇怪。下面的代码给出了错误,存在 unsupportable 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
有关,它使用了刚刚加入 table 的信息。但是后来我发现 similar code,这似乎可行。我很困惑。这怎么可能,更改 ON 子句会使查询失败?
upd1: 我认为问题与数据类型无关。
Text datatype
: s2t_source.source_table, s2t_source.source_field, S2T.[table], S2T.[列], Tables.TableName, Columns.ColumnName
Integer datatype
: Tables.id, Columns.id, s2t.source_id
upd2: 我用的是Access 2010,在这3个table中,table之间只有1个外键,名字叫Tables
和 Columns
Tables.id = Columns.table_id
s2t_source.source_table = "money"
...不是 JOIN 条件而是 WHERE 条件。右边的站点变量应该包含前面 tables/joins 的内容。
不知道上下文,只能猜解:
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";