首页 > 解决方案 > 如何通过删除 MS Access 中的内部查询名称来连接两个查询

问题描述

我有两张桌子。一个表有楼层号(tb_FloorNumber.FloorNumber。记录:例如1到15),另一张表有楼层号和User_Id列(tb_Emp_Master.FloorNumber,tb_Emp_Master.User_Id)。我想从 tb_FloorNumber 中获取所有记录,并且只从 tb_Emp_Master 中获取条件(User_Id =“fat35108”)的记录。

在此处输入图像描述

我知道我可以用这样的两个查询来做到这一点: 查询 1:

SELECT DISTINCT tb_Emp_Master.FloorNumber
FROM tb_Emp_Master
WHERE (((tb_Emp_Master.User_Id)="fat35108"));

查询2:

SELECT DISTINCT tb_FloorNumber.FloorNumber, Query1.FloorNumber
FROM tb_FloorNumber LEFT JOIN Query1 ON tb_FloorNumber.FloorNumber = Query1.FloorNumber;

但我想用 sing 查询而不是在 Query 2 中使用 Query1 来编写这个查询

我试过这样:

SELECT DISTINCT tb_FloorNumber.FloorNumber, tb_Emp_Master.FloorNumber
FROM tb_FloorNumber LEFT JOIN tb_Emp_Master ON tb_FloorNumber.FloorNumber = tb_Emp_Master.FloorNumber
WHERE (((tb_Emp_Master.User_Id)="fat35108"));

但它只带来了一条记录(例如 8 条)

请帮我写这个

标签: sqlsql-serverms-access

解决方案


如果设置条件:

tb_Emp_Master.User_Id = "fat35108"

WHERE子句中,那么您实际上得到的INNER JOIN是 a 而不是 aLEFT JOIN因为您仅从tb_Emp_Master.
使用tb_Emp_MasterinLEFT JOIN而不是并在子句Query1中设置条件:ON

SELECT DISTINCT
  tb_FloorNumber.FloorNumber, 
  tb_Emp_Master.FloorNumber
FROM tb_FloorNumber LEFT JOIN tb_Emp_Master 
ON tb_FloorNumber.FloorNumber = tb_Emp_Master.FloorNumber AND tb_Emp_Master.User_Id = "fat35108";

我不知道你为什么需要DISTINCT,所以我也使用它。


推荐阅读