2011-12-06 16 views
0

です。悪いデータモデルを扱うtable1MySQLの数とグループの平均値は

Table1 
id, name, area, bla1, bla2, bla3 

Table2 
table1_ID, stuff1, stuff2, ID 

trigger on table1 
insert row in table2 if table1 is updated 

私は、唯一の186行、私はExcelと2秒のように手動でこれを行うことはできませんので、あまりないが、10の異なるエリアを持っているが、私はリアルタイムレポートを作成したいです。行は、トリガが「完了」を示す表2にいくつかのものを挿入table1に更新されると

レポートは

area1 - %complete 
area2 - %complete 
area3 - %complete 
etc..... 

あろう。

私は(おそらく本当に悪い形)を行うことができます

select 
(select count(*) from table1 a where a.id in (select id from table2)) 
/
(select count(*) from table1) 
*100 

これは私の完全な全体的な割合を示します。 私は、各選択項目にwhere句を追加し、 'area'をハードコーディングしてからTENを結合することを考えていました。うん、1つのレポートでこれを取得するより良い方法があると教えてください。

明らかにこのクエリが失敗

select area, 
(
(select count(*) from table1 a where a.id in (select id from table2)) 
/
(select count(*) from table1) 
*100) from table1 
group by area 

である私は、どこかであっ収まるようになったことで、グループを把握します。前もって感謝します!

答えて

3
select area, count(table2.table1_ID)/count(table1.id) 
from table1 left join table2 on table1.id = table2.table1_ID 
group by area 
+0

ありがとう!!私は学んでいます。上記は完璧でした。私は私のレポートに合計を与えるために組合を追加しました。 – user1084424