select
in1.id,
in1.amount -
if(in1.id in(select `inId` from out1), (select sum(out1.`amount`) from out1 where out1.inId=in1.id),0) +
if(in1.id in(select out1.`inId` from out1,back1 where out1.id=back1.outId),(select sum(back1.`amount`) from back1,out1 where out1.inId=in1.id and out1.id=back1.outId),0) -
if(in1.id in(select `inId` from transfer1),(select sum(transfer1.`amount`) from transfer1 where in1.id=transfer1.inId),0)-
if(in1.id in(select `inId` from return1), (select sum(return1.`amount`) from return1 where return1.inId=in1.id),0) as total
from in1
经过测试后结果为:
id, total
1.490
2.486
3.489
希望能对你有所帮助
用左外连接查询:SELECT xm ,je1, je2 ,je3 ,je4 ,je5,je12
FROM 表 12
lEFT JOIN 表1 ON (表12.xm=表1.xm)
LEFT JOIN 表3 ON (表3.xm=表2.xm)
……
多表查询是指基于两个和两个以上的表或是视图的查询.在实际应用中,查询单个表可能不能满足你的需求,(如显示sales部门位置和其员工的姓名),这种情况下需要使用到(dept表和emp表)
自连接是指在同一张表的连接查询
select * from emp where empno=(select mgr from emp where ename='ford')
子查询是指嵌入在其它sql查询语句中的select语句,也叫嵌套查询
单行子查询是 指只返回一行数据的子查询语句
select * from emp where deptno=(select deptno from emp where ename='smith')
多行子查询指返回多行数据的子查询 使用关键字 in
如果我们的一个子查询,返回的 结果是多列,就叫做列子查询
合并多个select语句的结果,可以使用集合 *** 作符 union,union all
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)