访问Sql插入子查询不起作用

时间:2017-05-11 15:25:13

标签: sql ms-access

我正在设计一个Web表单以发布到Microsoft Access 2010中的SharePoint网页。我有一个表单,它使用组合框来选择团队名称。我需要将与该团队名称对应的团队ID输入到employee表中。这就是我到目前为止所做的:

INSERT INTO Employee ( Employee_Name, Team_ID )
VALUES ([Forms]![Add Employee]![txtName], (SELECT MAX(Team.Team_ID)
FROM Team, Employee
WHERE [Team]![Team_Name]=[Forms]![Add Employee]![cmbxTeam]));

它给我一个错误说

  
    

查询输入必须至少包含一个表或查询。

  

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以使用VALUES子句指定硬编码值,也可以使用SELECT语句生成要插入的内容。在这里,你将两者结合起来。代替:

INSERT INTO Employee ( Employee_Name, Team_ID )
SELECT 
    [Forms]![Add Employee]![txtName], 
    MAX(Team.Team_ID)
FROM Team, Employee
WHERE [Team]![Team_Name]=[Forms]![Add Employee]![cmbxTeam];

稍微不相关,当您不需要SELECT中的Employee表时,为什么要交叉加入员工和团队?

这应该是等效的,而且要快得多:

INSERT INTO Employee ( Employee_Name, Team_ID )
SELECT 
    [Forms]![Add Employee]![txtName], 
    MAX(Team.Team_ID)
FROM Team
WHERE [Team]![Team_Name] = [Forms]![Add Employee]![cmbxTeam];