现在的位置: 首页 > 综合 > 正文

2010/09/14am多表练习

2017年12月20日 ⁄ 综合 ⁄ 共 850字 ⁄ 字号 评论关闭

有三个表:

基于三个表的联接。

INOutBill:

InOutBills:

WarHouse:

要示显示仓库的编号(whcode)该字段存在于InOutBill表中,仓库的名称(whname)该字段存在于WareHouse表中,出库总数量(qty),出库金额(qtc*Price),出库金额显示两位小数。

 相应代码如下:

select a.whcode,whname,sum(qty)as 出库数量,Round(sum(qty*Price),2) as 出库金额
from InOutBill a
inner join InOutBills b on a.BillCode=b.BillCode and InOutFlag='o'
left join WareHouse c on a.WhCode=c.WhCode
group by whname,a.whcode

 

第二种方法:使用Where子句

select a.whcode,whname,sum(qty)as 出库数量,Round(sum(qty*Price),2) as 出库金额
from InOutBill a
inner join InOutBills b on a.BillCode=b.BillCode

left join WareHouse c on a.WhCode=c.WhCode

where InOutFlag='o'
group by whname,a.whcode

Round的用法:Round(字段,小数位)

InOutFlag字段表示出入库的标识,I表示入库,O表示出库。

找表与表之间的关联是找表这间有意义的字段,所谓有意义就是代表字段的意义相同。例如此三表中,InOutBill表与InOutBills表通过BillCode相关联,InOutBil表与WarHouse表的Whcode相关联。

group by用于分组。除了在Select语句中聚合函数外,所有在Select语句中列出的字段必须在Group By子句中。Having对聚合函数进行筛选。

有主从关系的表之间关联用Inner Join,其它附加的表用Left Join.

抱歉!评论已关闭.