2010/09/14am多表练习

来源:互联网 发布:黑莓 知乎 编辑:程序博客网 时间:2024/05/29 15:08

有三个表:

基于三个表的联接。

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.

原创粉丝点击