更改访问查询中的外键值

Change Foreign Key Value in Access Query

这是我想要完成的一个小例子。

Table 1: 人

Table 2:头发颜色

我有查询 1,我在其中给它一个颜色参数 (c),它 return 是头发颜色的 ID

SELECT HairColor.ID
FROM HairColor
WHERE (([HairColor].[Color]=[c]));

现在在查询 2 中,我有人物 table 和查询 1。在该字段中,我想选择人物 ID 2 并根据查询 1 结果更改其 HairColor_ID (应该 return 一个 ID),查询 2 如下:

UPDATE Person INNER JOIN Query1 ON Person.ID = Query1.ID SET 
Person.HairColor_ID = [Query1]![ID]
WHERE (((Person.ID)=2));

我假设 [Query1]![ID] return 是 ID。

基本上我想做的就是通过将颜色值作为参数来更新 HairColor_ID。我该怎么做?

您正在尝试通过 Person.ID = Query1.ID 将 Person table 加入 Query1,但 Query1.ID 不是人的 ID,而是头发颜色。 ..

此查询应将人 2 的 HairColor 更改为您作为参数 c:

输入的颜色
UPDATE Person, Query1 SET Person.HairColor_ID = [Query1].[ID]
WHERE (((Person.ID)=2));

基本上你想要的是更新 PersonHairColor 之间的 CROSS JOIN。你不需要 Query1,对我来说,至少没有它,机制会更清晰。

PARAMETERS c Text ( 255 );
UPDATE Person, HairColor
SET Person.HairColor_ID = [HairColor].[ID]
WHERE Person.id=2 AND HairColor.Color=[c];