首页 > 数据库 > mysql教程 > sql 多表联合查询

sql 多表联合查询

WBOY
发布: 2016-06-07 17:47:51
原创
2440 人浏览过

关于sql 多表联合查询方法很多,我们今天就来讲一下关于sql多表查询的用法与实例代码,一般会用到select  * from (select ) union 来操作。

select 类型,sum(合计金额) from
(select 商品名称,数量,日期,类型,合计金额 from 出库表
where 日期 > '2010-5-5 00:00:00'
union
select 商品名称,数量,日期,类型,合计金额 from 入库表
where 日期 > '2010-5-5 00:00:00'
union
select 商品名称,数量,日期,类型,合计金额 from 销售表
where 日期 > '2010-5-5 00:00:00')
group by 类型


下面来看看实例

三个表

收费表

id  flowid totall
1    k1    3000

详细表
id flowid  pid num
1    k1    1  2000
2    k1    2  1000

付款方式表
id pname
1  现金
2  支票
3  刷卡

create table pay(id int,flowid varchar(10),totall int)
insert into pay select 1,'k1',3000

create table detail(id int,flowid varchar(10),pid int,num int)
insert into detail select 1,'k1',1,2000
insert into detail select 2,'k1',2,1000

create table mode(id int,pname varchar(10))
insert into mode select 1,'现金'
insert into mode select 2,'支票'
insert into mode select 3,'刷卡'

 

declare @sql varchar(8000)
set @sql=''

select @sql=@sql+',['+pname+']=sum(case b.pid when '+rtrim(id)+' then num else 0 end)'
from mode

set @sql='select a.id,a.flowid,a.totall'+@sql+' from pay a,detail b where a.flowid=b.flowid group by a.id,a.flowid,a.totall'
exec(@sql)


结果:

id  flowid totall 现金  支票  刷卡
1    k1    3000  2000  1000 0

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板