2009-07-24 5 views
0

のは、(我々は3つのテーブルグループと異なるテーブルからの合計

T1

ID |Type|EPoints 
111|1 |4 
118|1 |3 

T3

ID |Type| Class | Points 
111|1 |a101 | 12 
111|1 |b104 | 10 
112|2 |a112 | 40 
118|1 |a245 | 30 
186|2 |c582 | 23 

T2(タイプ= 1のみのデータ)を持っているとしましょうタイプ= 2のデータのみ)

例えば
ID |Type|EPoints 
112|2 |9 
186|2 |15 

そして、我々はID、タイプ、合計(ポイント)が表示されますどのビューを持つようにしたい+ Epoints

ID |Type| Points 
111|1 | 26 
112|2 | 49 
118|1 | 33 
186|2 | 38 

どのように私はそれを行うことができますか?

+0

宿題のような匂い。 – Petrogad

+0

私はそれが男だったらいいと思う、それは... –

答えて

0
select dt.id 
    , dt.type 
    , dt.points + coalesce(t2.epoints, t3.epoints) as points 
    from (select t1.id 
      , t1.type 
      , sum(t1.points) as points 
      from t1 
     group 
      by t1.id) as dt 
left outer 
    join t2 
    on t2.type = dt.type 
left outer 
    join t3 
    on t3.type = dt.type 
+0

合計を脇に - あなたのSQLのような形式を使用していますか?手で? – seth

+0

ああ、残念なことに手作業でやってます。私は何かを自動的に行うことが大好きですが、どこから始めたらいいのか分かりません。 – longneck

0

が、これはうまくいくかもしれないように見えます(参加LEFT一つであることが必要かもしれ - Epoints周りCOALESCEをゼロにヌルを変換するために - あなたはすべての一致するレコードなしt1内のレコードについて注意を払う必要がある場合もちろん、他のテーブルのどちらでも)。

SELECT t1.ID, t1.Type, SUM(t1.Points) + other.Epoints 
FROM t1 
JOIN (
    t2 
    UNION 
    t3 
) other ON (other.Type = t1.Type) 
GROUP BY t1.ID 
関連する問題