构建含异常处理的Access双表关联自定义查询请求
Access查询实现方案:双ID关联映射员工编码
现有表结构
Table A
| Employee_Supervise_Name_A | Employee_A_ID | Employee_Supervised_Name_B | Employee_B_ID |
|---|---|---|---|
| joe | 1234 | Steve | 5612 |
| Martine | 7777 | Elena | 2222 |
| Smith | Bob | 2222 | |
| Michael | 5555 | alexa | |
| Ana | Edgar | 6666 | |
| Lili | 1010 | Alonso | 2020 |
| Hans | Carlos |
Table B
| Employee_ID | Employee_Code |
|---|---|
| 1234 | A |
| 5612 | B |
| 7777 | C |
| 5555 | D |
| 6666 | E |
| 2222 | F |
| 9999 | H |
需求说明
通过Employee_ID关联两张表,为Table A的Employee_A_ID和Employee_B_ID分别匹配Table B中的Employee_Code;若Table A中ID为空或在Table B无对应记录,编码字段留空。
实现SQL语句
在Access中使用两次左连接,确保保留Table A的所有记录,无匹配时返回空值:
SELECT A.Employee_Supervise_Name_A, A.Employee_A_ID, B1.Employee_Code AS Employee_Code_A, A.Employee_Supervised_Name_B, A.Employee_B_ID, B2.Employee_Code AS Employee_Code_B FROM (Table_A AS A LEFT JOIN Table_B AS B1 ON A.Employee_A_ID = B1.Employee_ID) LEFT JOIN Table_B AS B2 ON A.Employee_B_ID = B2.Employee_ID;
执行结果
运行上述语句后,将得到符合预期的结果:
| Employee_Supervise_Name_A | Employee_A_ID | Employee_Code_A | Employee_Supervised_Name_B | Employee_B_ID | Employee_Code_B |
|---|---|---|---|---|---|
| joe | 1234 | A | Steve | 5612 | B |
| Martine | 7777 | C | Elena | 2222 | F |
| Smith | Bob | 2222 | F | ||
| Michael | 5555 | D | alexa | ||
| Ana | Edgar | 6666 | E | ||
| Lili | 1010 | Alonso | 2020 | ||
| Hans | Carlos |
注:若原Table A中Smith的Employee_B_ID实际为9999,对应Employee_Code_B会匹配为H,需以实际数据为准。
内容的提问来源于stack exchange,提问作者David Edgar
相关产品推荐
相关产品推荐

