2011-12-06 61 views
0

我會嘗試和描述最好的我可以。使用錯誤的數據模型。MySQL的數量和平均數與組通過

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

Table2 
table1_ID, stuff1, stuff2, ID 

trigger on table1 
insert row in table2 if table1 is updated 

table1我有10個不同的區域,只有186行,沒有這麼多,我不能這樣做手動像2秒的Excel,但我想創建實時報告。

報告會

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

當行table1更新觸發插入表2中顯示「完整的」一些東西。

我可以做(可能非常糟糕的形式)

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

這給了我一個完整的整體比例。 我正在考慮將where子句添加到每個選擇,硬編碼「區域」,然後聯合TEN時間。呃,告訴我,有一個更好的方法可以在一份報告中得到這個。

顯然這個查詢是一個失敗

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