2017-08-19 7 views
0

異なるテーブルから異なるカラム名で値を取得し、バランス計算を行うことができる共通名として選択する必要があります。そのような 何か:Mysqlを使用して異なる名前の異なるテーブルから値を選択してクレジットとデビットを計算し、残高を計算する

表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ですが、列名は異なっており、私は、日付でグループ化されたすべてのテーブルからクレジットカード、デビットカードとバランスを計算する必要があります。

+1

あなたの質問を編集し、サンプルデータと希望する結果を提供してください。 –

+0

編集しました。希望今それはもっとはっきりとすることができます。ありがとうございました。 –

+0

申し訳ありませんが、日付を変更するつもりです。 –

答えて

1

最大3つのテーブルに特定の日付のエントリがない場合でも、これはうまくいくと思います。
残高は1日で、累積ではありません。

あなたのサンプルの結果は得られませんが、私はあなたの例にエラーがあると思います。 ID 1と同じ日付に2行が本当に必要ですか?

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 
+0

私は最良のクエリを作成するのではありませんが、これは要求された結果が狂ったように見えます。 – Noob

+0

@Noobコードを変更しましたが、現在ははるかに小さくなっています。 – Pharaoh

+0

これは私にアイデアを与えました。ありがとうございました。 –

関連する問題