使用Mysql从不同名称的表中选择值作为贷方和借方,并计算余额

使用Mysql从不同名称的表中选择值作为贷方和借方,并计算余额,mysql,sql,Mysql,Sql,我需要从具有不同列名的不同表中获取值,并选择它作为一个通用名称,以便进行平衡计算。 诸如此类: 表1信贷 +-----------+--------------+---------------+ | ID_company| date_table1 | credit_table1| +-----------+--------------+---------------+ | 1 | 2017-08-19 | 50 | | 1 |

我需要从具有不同列名的不同表中获取值,并选择它作为一个通用名称,以便进行平衡计算。 诸如此类:

表1信贷

+-----------+--------------+---------------+
| ID_company|  date_table1 |  credit_table1|
+-----------+--------------+---------------+
|         1 |   2017-08-19 |            50 | 
|         1 |   2017-08-19 |           250 |
|         1 |   2017-08-20 |             0 |
+-----------+--------------+---------------+
表2信贷

+-----------+--------------+---------------+
| ID_company|  date_table2 |  credit_table2|
+-----------+--------------+---------------+
|         1 |   2017-08-19 |           150 | 
|         1 |   2017-08-19 |            50 |
|         1 |   2017-08-19 |             0 |
+-----------+--------------+---------------+
表3借方

+-----------+--------------+---------------+
| ID_company|  date_table3 |   debit_table3|
+-----------+--------------+---------------+
|         1 |   2017-08-19 |            10 | 
|         1 |   2017-08-19 |            10 |
|         1 |   2017-08-20 |             0 |
+-----------+--------------+---------------+
表4借方

+-----------+--------------+---------------+
| ID_company|  date_table4 |   debit_table4|
+-----------+--------------+---------------+
|         1 |   2017-08-19 |            10 | 
|         1 |   2017-08-19 |            10 |
|         1 |   2017-08-20 |             0 |
+-----------+--------------+---------------+
结果

+-----------+--------------+---------------+--------------+---------+
| ID_company|  date_grouped|   total_debit | total_credit | balance |
+-----------+--------------+---------------+--------------+---------+
|         1 |   2017-08-19 |            20 |          200 |     180 |
|         1 |   2017-08-19 |            20 |          300 |     280 | 
|         1 |   2017-08-20 |             0 |            0 |       0 |
+-----------+--------------+---------------+--------------+---------+

表之间的关系是ID_company,但列名不同,我需要从按日期分组的所有表中计算贷项、借项和余额。

我认为这应该可行,即使在最多三个表中没有给定日期的条目。 余额是每天的,不是累计的

它不会产生您的示例结果,但我认为您的示例中存在错误。ID 1和同一日期确实需要两行吗

SELECT 
    ID_company, 
    date_grouped, 
    sum(credit_table1) + sum(credit_table2) total_credits, 
    sum(debit_tabel3) + sum(debit_table4) total_debit, 
    sum(debit_tabel3) + sum(debit_table4)
        - (sum(credit_table1) + sum(credit_table2)) balance
FROM (
    SELECT 
        ID_Company, 
        date_table1 date_grouped, 
        credit_table1,
        0 credit_table2, 
        0 debit_table3, 
        0 debit_table4 
    FROM table1
    UNION
    SELECT 
        ID_Company, 
        date_table2 date_grouped, 
        0 credit_table1, 
        credit_table2,
        0 debit_table3, 
        0 debit_table4 
    FROM table2
    UNION
    SELECT 
        ID_Company, 
        date_table3 date_grouped, 
        0 credit_table1, 
        0 credit_table2, 
        debit_table3,
        0 debit_table4 
    FROM table3
    UNION
    SELECT 
        ID_Company, 
        date_table4 date_grouped, 
        0 credit_table1, 
        0 credit_table2, 
        0 debit_table3,
        debit_table4
    FROM table4  
)
GROUP BY ID_company, date_grouped

编辑您的问题并提供示例数据和所需结果。编辑它。希望现在能更清楚。谢谢。很抱歉日期,我要更改它。@VictorFaria期望的结果非常奇怪,令人困惑,而且有点不可能,因为您有多个日期编号,具有相同的公司id。现在如何确定哪个借方属于哪个日期,因为日期相同?所以我需要将其作为一个新变量进行分组,如按日期分组的total_credit。只需要按日期分组,ID_公司需要是1。我不擅长创建最佳查询,但对于请求的结果来说这看起来很疯狂。这给了我一个想法。谢谢。如果此答案解决了您的问题,您可以通过单击旁边的复选标记来接受它。只需编辑它。非常感谢。