我在数据库上有一个n对n的关系,现在想填充中间的连接表。
我遇到的问题与that guy here相同,但是我的两个表没有直接关系。
所以我的第一次尝试是:
INSERT into foo_has_bar (foo_ID, bar_ID) VALUES (
(Select TOP 1 ID from foo where foo_cond = "TRUE"),
(Select TOP 1 ID from bar where bar_cond = "TRUE")
)
现在这无效并返回
查询输入必须至少包含一个表或查询
现在尝试按上面的链接中所述的形式创建它时,我将需要以下内容:
INSERT into foo_has_bar (foo_ID, bar_ID)
Select foo.ID, bar.ID FROM foo, bar
...
)
但是我现在如何合并 SELECT TOP 1
和WHERE
并仅将对应的{{1} }})?
答案 0 :(得分:2)
我希望此查询在MS Access中可以工作:
INSERT into foo_has_bar (foo_ID, bar_ID)
VALUES ((Select TOP 1 ID from foo where foo_cond = "TRUE"),
(Select TOP 1 ID from bar where bar_cond = "TRUE")
);
但是如果没有,请尝试以下操作:
INSERT into foo_has_bar (foo_ID, bar_ID)
SELECT f.ID, b.ID
FROM (Select TOP 1 ID from foo where foo_cond = "TRUE"
) as f,
(Select TOP 1 ID from bar where bar_cond = "TRUE"
) as b;
请注意:通常您应该将ORDER BY
与TOP
一起使用,这样您获得的ID是一致的。
答案 1 :(得分:0)
我通过that question中的提示找到的实际解决方案:
INSERT into foo_has_bar (foo_ID, bar_ID)
VALUES (DLOOKUP("ID", "foo", "foo_cond = ""TRUE"""),
(DLOOKUP("ID", "bar", "bar_cond = ""TRUE"""),
);
糟糕的访问权限。