我有三个桌子
成员
tax_bill
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详细信息的记录。
此外,我正在使用联接查询,因此如果建议将使用联接查询,它将很有用。
预先感谢您:)
答案 0 :(得分:1)
您似乎想要json
:
URL1
答案 1 :(得分:1)
这是您需要的(考虑您提供的示例表):
select m.name, m.address, t.tax_amount, case when isnull(r.paid_amount, 0) = 0 then 'not paid' else cast(r.paid_amount as varchar(100)) end as paid_tax
from member m join tax_bill t on m.id = t.member_id
left join tax_receipt r on m.id = r.member_id
有一个工作副本here。
但是,对于注释中提到的复杂的长查询,您应该先对其进行格式化以使其清晰易读,然后阅读the importance of the join order when using left-right-full joins以便按照您的需要以正确的顺序加入,然后尝试通过以下方式删除一个找出丢失的记录丢失的地方。
祝你好运!