求MS Access SQL查询:获取tblCompany全部名称及对应符合条件的地址或Null
MS Access SQL 查询解决方案
需求说明
- 输出第一列:
tblCompany表中的所有Cname字段值 - 输出第二列:仅当
tblCompanyAddress表中对应记录的Catyp等于1时,返回该记录的Cadr;无匹配记录或Catyp不等于1时显示Null
数据表结构
tblCompany
| id | Cname |
|---|---|
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
tblCompanyAddress
| id | tblCompanyKey | Cadr | Catyp |
|---|---|---|---|
| 1 | 1 | po | 1 |
| 2 | 1 | kk | 2 |
| 3 | 3 | dd | 2 |
| 4 | 3 | er | 3 |
| 5 | 4 | er | 1 |
实现SQL语句
SELECT c.id, c.Cname, ca.Cadr FROM tblCompany c LEFT JOIN tblCompanyAddress ca ON c.id = ca.tblCompanyKey AND ca.Catyp = 1;
逻辑说明
使用**左连接(LEFT JOIN)**保证tblCompany的所有记录都会被查询出来,同时将ca.Catyp = 1作为连接条件的一部分,这样只有符合地址类型要求的记录才会被关联到公司记录上。如果没有匹配的符合条件的地址记录,Cadr字段会自动显示为Null,完全满足需求。
预期查询结果
| id | Cname | Cadr |
|---|---|---|
| 1 | A | po |
| 2 | B | |
| 3 | C | |
| 4 | D | er |
内容的提问来源于stack exchange,提问作者Kert Lopper
相关产品推荐
相关产品推荐

