sql - 如果从另一个表中没有找到匹配的记录,则添加默认值
问题描述
我有三张桌子
成员
- ID
- 姓名
- 地址
税单
- bill_id
- 会员ID
- 税额
tax_receipt
- 收据_id
- 会员ID
- 已付金额
输出:
Name | Address | Tax | Paid Tax
ABC | xyz | 100 |100
PQR | yte | 200 | Not paid
这里“未支付”是收据表中没有的默认值,记录仅在成员和账单表中。
从上面的表格中,我想显示会员详细信息以及他的账单详细信息和收据详细信息。最初 tax_receipt 为空,当用户缴纳税款时,该条目将在 tax_receipt 详细信息中。我想创建一个报告,其中将显示成员表中的所有成员详细信息、tax_bill 中的税务详细信息和 tax_receipt 中的收据详细信息。如果在 tax_receipt 表中找不到特定成员的 tax_bill 详细信息的记录,我想要显示零。
另外,我正在使用联接查询,因此如果建议将使用联接查询,那将很有用。
先感谢您 :)
解决方案
你似乎想要left outer join
:
select m.Name, m.Address, txb.tax_amount as Tax,
isnull(cast(txr.paid_amount as varchar(255)), 'Not paid') as PaidTax
from member m inner join
tax_bill txb
on txb.member_id = m.id left outer join
tax_receipt txr
on txr.receipt_id = txb.bill_id;
推荐阅读
- babel-core - 模块构建失败:错误:在 Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) 处找不到模块“babel-core”
- reactjs - if else 多于一个日期结果
- c - 为什么在我输入另一个输入之后我的代码不打印?
- jquery - 如何更改 snap.svg 中的文本
- javascript - 如何检查元素是否有效 JSX
- python - Open CV 中的关键特征跟踪
- maven - maven 版本:设置不采用 version.properties 的版本
- sql - 按索引表排序(关联数组)
- java - 任何服务类都不应使用 Java.util.date
- azure - 如何在 azure datafactory 复制活动中将会话参数传递给 Oracle .. 在 Oracle Linkedservice