如何计算mysql中两个表的值 [英] How to calculate the values from two tables in mysql

查看:210
本文介绍了如何计算mysql中两个表的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在这样的mysql中有一个表



表1名称:credit

 Date Company名称金额
2013-12-11 smevc 500
2013-12-21 smevc 500
2013-12-21 smevc 1000
2013-12-21 smevc 6726
2013-12-21 smevc 8354.40
2013-12-20 smevc 700
2013-12-22 sec 3736
2013-12-23 ccs 3000



表2名称:借方

日期company_name deb_amt 
2013-12-24 smevc 1000
2013-12-22 smevc 2000
2013-12-22 ccs 2000



现在我想在这里采取差值计算,即金额 - deb_amt

现在

我需要输出像

 comp_name bal_amt 
smevc 14780.40
sec 3736
ccs 1000



记住sec仅在表2中可用借记..不在表1中。

我得到了输出,但sec的值显示为null。

i使用了这个查询

  SELECT  cm.company_name  AS  comp_name,
(( SELECT SUM(credit_amount) FROM credit_details c WHERE c.company_name = cm.company_name GROUP BY c.company_name) -
SELECT SUM(debit_amount) FROM debit_details d WHERE d.company_name = cm.company_name GROUP BY d.company_name)) AS bal_amt
FROM credit_details cm GROUP BY cm.company_name
ORDER BY bal_amt DESC





pls更正我的查询以获得输出。

谢谢,

Siva

解决方案

这不是一个优雅的解决方案但是它可能有用...



 选择 
c .company,
c.amount - ifnull(d.debit, 0 )余额
来自

选择
公司,金额(金额)金额
来自 credit
group by company
)c
left join

选择
公司,sum(deb_amt)借记
来自 debit
group by company
)d
on a.company = d.company


I am having a table in mysql like this

Table1 name: credit

Date          Company Name        Amount
2013-12-11    smevc               500
2013-12-21    smevc               500
2013-12-21    smevc               1000
2013-12-21    smevc               6726
2013-12-21    smevc               8354.40
2013-12-20    smevc               700
2013-12-22    sec                 3736
2013-12-23    ccs                 3000


Table2 name: debit

Date         company_name         deb_amt
2013-12-24   smevc                1000
2013-12-22   smevc                2000
2013-12-22   ccs                  2000


Now i want to take difference calculation here i.e., Amount - deb_amt
Now
I need a output like

comp_name  bal_amt
smevc      14780.40
sec        3736
ccs        1000


Remember sec is available only in table 2 debit.. not in table 1 credit..
I got the output but the value of sec was displayed as null.
i used this query

SELECT cm.company_name AS comp_name,
((SELECT SUM(credit_amount) FROM credit_details c WHERE c.company_name = cm.company_name GROUP BY c.company_name) -
(SELECT SUM(debit_amount) FROM debit_details d WHERE d.company_name = cm.company_name GROUP BY d.company_name)) AS bal_amt
FROM credit_details cm GROUP BY cm.company_name
ORDER BY bal_amt DESC



pls correct my query to get the output.
Thanks,
Siva

解决方案

It's not an elegant solution but it may work...

select 
c.company,
c.amount - ifnull(d.debit,0) balance
from
(
select 
company,sum(amount) amount
from credit
group by company
)c
left join
(
select 
company, sum(deb_amt) debit
from debit
group by company
)d
on a.company = d.company


这篇关于如何计算mysql中两个表的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆