【问题标题】:How join two query by removing inner query name in MS Access如何通过删除 MS Access 中的内部查询名称来连接两个查询
【发布时间】:2020-06-11 19:55:53
【问题描述】:

我有两张桌子。一个表有楼层号(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 条)

请帮我写这个

【问题讨论】:

    标签: sql sql-server ms-access


    【解决方案1】:

    如果你设置了条件:

    tb_Emp_Master.User_Id = "fat35108"
    

    WHERE 子句中,您实际上会得到INNER JOIN 而不是LEFT JOIN,因为您只过滤来自tb_Emp_Master 的匹配行。
    LEFT JOIN 中使用tb_Emp_Master 而不是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,所以我也使用它。

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      相关资源
      最近更新 更多