2017-06-14 11 views
1

私は情報を持つ2つのテーブルを持っています:ID、persona_id、total_amount ペルソナIDは何度も繰り返すことができます。だから私は、クエリのすべての1つのIDがTOTAL_AMOUNTを取得:データ形式を取得する2つのテーブルと結果の合計値

select d.id as debt_id, p.name as persona, sum(d.total_amount) as total_amount 
from debt d 
    join persons p on d.persona_id = p.id group by p.name 

私は1つのクエリ内の各テーブルからデータを取得し、TOTAL_AMOUNT欄でaritmethic propertysを行うと、1 tabelとしてそれを返すようにしたいです。合計列の( - 、+、/、*)iは演算とcomined 2つのテーブルを取得したい結果

表1

id persons_id total_amount 
1 2   50 
2 3   100 
3 2   200 
4 5   300 
5 1   500 

表2

id persons_id total_amount 
1 2   25 
2 1   100 
3 5   50 
4 3   100 
5 4   300 

。基本的には、私はさまざまな場合に必要なフォームの最終的な合計金額を取得する変更。

select c.id, c.persona_id, c.total_amount - d.total_amount as new_total 

from (   select c.id , c.persona_id, sum(c.total_amount) as total_amount from credit c 
       join persons p on c.persona_id = p.id 
       group by p.name) c 
inner join ( select d.id, d.persona_id, sum(d.total_amount) as total_amount from debt d 
       join persons p on d.persona_id = p.id 
       group by p.name) d 

on c.persona_id = d.persona_id 
group by c.id, c.persona_id 
+0

最初の質問「同じ構造の2つのテーブルを持っているのはなぜですか? – RiggsFolly

+0

@ RiggsFolly提示された構造がクエリと一致しないので、私はOPが「読みやすくする」ためにいくつかの情報を「残した」と仮定します。私たちは3つの異なるテーブルを持つことさえあります。 –

+0

私は全く同じ構造の2つのテーブルを持っていますが、1つのテーブルに保持されている木材はサイトaで選んだ木材の量を保持しますが、他のものはサイトbで石炭量を保持しますが、 Myb問題は2つのテーブルに情報を分割することですか? –

答えて

1

あなたは合計をしたい場合は、試してみてください:

select id, person_id, sum(total_amount) 
from 
(
select id, person_id, total_amount 
from table1 
union all 
select id, person_id, total_amount 
from table2 
) 
group by id, person_id 

をあなたは他のことをしたい場合は、試してみてください。

select t1.id, t1.person_id, t1.total_amount [+ -/*] t2.total_amount as new_total 
from table1 t1 
inner join table2 t2 
on t1.id = t2.person_id 
group by t1.id, t1.person_id 
JohnHCのanswearに基づいて私のためにして働いていた何

+0

あなたのお手伝いをしながら遊んでいただきありがとうございました。私が欲しかったものを手に入れました。私は私が望む形でデータを手に入れるのに役立つ解決策で投稿を更新しました。 –

関連する問題