sql:如何查询不基于ID的外键

时间:2012-12-05 16:36:38

标签: sql

我的表IncomingLetter有一个表部门的外键,它有一个ID和一列Short_Name

我正在使用此查询来计算分配给部门的传入字母。

SELECT COUNT(DocumentNumber) AS TotalNumberIncomingLetters
FROM IncomingLetter
WHERE Assigned_To_Department=1;

虽然这有效,但我希望根据短名称​​进行查询,而不是基于ID。

SELECT COUNT(DocumentNumber) AS TotalNumberIncomingLetters
FROM IncomingLetter
WHERE Assigned_To_Department.Short_Name="My Department Name";

这不起作用,而我发现使用此语法的示例。但是,重要的是要注意,我在MS访问中使用此查询。

1 个答案:

答案 0 :(得分:2)

你应该使用

SELECT COUNT(il.DocumentNumber) AS TotalNumberIncomingLetters
FROM IncomingLetter il
 INNER JOIN Department d on d.ID = il.Assigned_To_Department
WHERE d.Short_Name="My Department Name";

“我的部门名称”文本实际存储在Departments表中,只有数字(1)存储在IncomingLetter表格的Assigned_To_Department字段中。<登记/> 要求Assigned_To_Department.Short_Name基本上要求数字1得到Short_Name字段,这没有意义。

在这些场景中,您需要告诉数据库引擎两件事:

  • 哪些表已连接 - 在这种情况下为IncomingLetterDepartmentsinner join部分)
  • 如何连接 - 通过设置Assigned_To_DepartmentID字段(on ...部分