首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接5个表

连接5个表
EN

Stack Overflow用户
提问于 2013-06-27 13:30:57
回答 2查看 89关注 0票数 0

我需要连接5张桌子才能得到特定的帐单号。

表是

  1. 比尔,
  2. Service_bill
  3. Damage_cost
  4. Extraperson_cost
  5. Advance_cost

除了bill之外,所有其他表都可以存储空值。

我的疑问如下..。

代码语言:javascript
复制
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,所以必须完全返回第一个表。但我不知道为什么会这样!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-27 13:44:59

谢谢内维尔k。我用外接..。

代码语言:javascript
复制
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'
票数 0
EN

Stack Overflow用户

发布于 2013-06-27 13:36:43

内部连接意味着您只为在所有其他4个表中都有记录的人寻找账单。使用外部联接代替。

此外,您还将结果限制在"advance_cost“中记录为账单57的那些项上。很可能不是这个主意..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17344567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档