首页 > 解决方案 > 如果从另一个表中没有找到匹配的记录,则添加默认值

问题描述

我有三张桌子

成员

税单

tax_receipt

输出:

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 详细信息的记录,我想要显示零。

另外,我正在使用联接查询,因此如果建议将使用联接查询,那将很有用。

先感谢您 :)

标签: sqlsql-server

解决方案


你似乎想要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;

推荐阅读