这是我要完成的工作的一个小例子。
表1:人
表2:HairColor
我有查询1,在其中给我一个颜色参数(c),它返回该发色的ID
SELECT HairColor.ID
FROM HairColor
WHERE (([HairColor].[Color]=[c]));
现在在查询2中,我具有人员表和查询1。在该字段中,我想选择人员的ID 2,并根据查询1的结果(应返回ID)更改其HairColor_ID(查询2)。如下:
UPDATE Person INNER JOIN Query1 ON Person.ID = Query1.ID SET
Person.HairColor_ID = [Query1]![ID]
WHERE (((Person.ID)=2));
我假设[Query1]![ID]返回ID。
基本上,我要做的就是通过将Color Value作为参数来更新HairColor_ID。我该怎么办?
答案 0 :(得分:1)
您正在尝试通过Person.ID = Query1.ID将Person表与Query1联接,但是Query1.ID不是人的ID,而是发色...
此查询应将第2个人的HairColor更改为您作为参数c输入的颜色:
UPDATE Person, Query1 SET Person.HairColor_ID = [Query1].[ID]
WHERE (((Person.ID)=2));
答案 1 :(得分:1)
基本上,您想要的是在CROSS JOIN
和Person
之间更新HairColor
。您不需要Query1
,至少对我来说,没有它的机制更加清晰。
PARAMETERS c Text ( 255 );
UPDATE Person, HairColor
SET Person.HairColor_ID = [HairColor].[ID]
WHERE Person.id=2 AND HairColor.Color=[c];