我需要连接5张桌子才能得到特定的帐单号。
表是
除了bill之外,所有其他表都可以存储空值。
我的疑问如下..。
select bill.bill_no,
bill.total,
bill.discount,
bill.to_be_paid,
isnull(Service_bill.total_amt,0) as ServiceCharge,
isnull(Damage_cost.total_amt,0) as DamageCost,
isnull(Extraperson_cost.total_amt,0) as ExtraCost,
isnull(Advance_cost.total_amount,0) as Advance
from bill
left join Advance_cost on bill.bill_no=Advance_cost.room_bill_no and bill.bill_no='57'
inner join Service_bill on bill.bill_no=Service_bill.room_bill_no
inner join Damage_cost on bill.bill_no=Damage_cost.room_bill_no
inner join Extraperson_cost on bill.bill_no=Extraperson_cost.room_bill_no现在,它返回数据的数据,连接条件正在变为真。
第一个表应该有值,然后其他表才是null,所以必须完全返回第一个表。但我不知道为什么会这样!
发布于 2013-06-27 13:44:59
谢谢内维尔k。我用外接..。
select bill.bill_no,bill.total,bill.discount,bill.to_be_paid,
isnull(Service_bill.total_amt,0) as ServiceCharge,
isnull(Damage_cost.total_amt,0) as DamageCost,
isnull(Extraperson_cost.total_amt,0) as ExtraCost,
isnull(Advance_cost.total_amount,0) as Advance
from bill
left join Advance_cost on bill.bill_no=Advance_cost.room_bill_no
left outer join Service_bill on bill.bill_no=Service_bill.room_bill_no
left outer join Damage_cost on bill.bill_no=Damage_cost.room_bill_no
left outer join Extraperson_cost on bill.bill_no=Extraperson_cost.room_bill_no
where bill.bill_no='57'发布于 2013-06-27 13:36:43
内部连接意味着您只为在所有其他4个表中都有记录的人寻找账单。使用外部联接代替。
此外,您还将结果限制在"advance_cost“中记录为账单57的那些项上。很可能不是这个主意..。
https://stackoverflow.com/questions/17344567
复制相似问题