构建自定义查询,其中包含两个访问表的一些例外情况

问题描述 投票:0回答:1

我想就我想要实现的要求寻求您的帮助。我不太确定如何处理此查询。

我在 Access 中有两个表表 A表 B

表 A 架构

员工_监督_姓名_A 员工_A_ID 员工_受监督_姓名_B 员工_B_ID
1234 史蒂夫 5612
马丁 7777 埃琳娜 2222
史密斯 鲍勃 2222
迈克尔 5555 Alexa
安娜 埃德加 6666
莉莉 1010 阿隆索 2020
汉斯 卡洛斯

表 B 架构

员工_ID 员工代码
1234 A
5612 B
7777 C
5555 D
6666 E
2222 F
9999 H

预期结果

根据公共employee_id,我想映射employee_code

注意:也有可能表A的employee_id在表B中不存在或者该字段为空。对于这种情况,我只想返回具有空字段的行。

员工_监督_姓名_A 员工_A_ID 员工_代码_A 员工_受监督_姓名_B 员工_B_ID 员工_代码_B
1234 A 史蒂夫 5612 B
马丁 7777 C 埃琳娜 2222 F
史密斯 鲍勃 9999 H
迈克尔 5555 D Alexa
安娜 埃德加 6666 E
莉莉 1010 阿隆索 2020
汉斯 卡洛斯
sql ms-access
1个回答
0
投票

在创建表时,员工的 ID 通常被视为主键(因为它们是唯一标识符)。在您的情况下,您有两个员工表,它们有自己的主键,没有超级键连接在一起,在我看来,这是一个糟糕的模式设计。

但无论如何:-

    select tt.Employee_supervise_name,tt.Employee_a_id, tt.employee_code_a, tt.Employee_Supervised_Name_B, tt.Employee_b_id, B.Employee_code as employee_code_b 
    from (select A.Employee_supervise_name, A.Employee_a_id, B.employee_code as employee_code_a, A.Employee_Supervised_Name_B, A.Employee_b_id
   from 
    A left join B on A.Employee_a_id = B.Employee_id) as tt 
    left join B on tt.Employee_b_id = B.Employee_id ;
© www.soinside.com 2019 - 2024. All rights reserved.