2012-04-20 49 views
0

我想加入3個表來獲得數據:從表3從表2 和sum(金額)從表1 和record_count 必填字段爲什麼我收到連接錯誤,當我改變參數MySQL查詢

我使用下面的查詢:

select a.cde,a.name,count(b.TransID) as t_cnt, 
     sum(c.Amt) as c_sumofamt 
from table1 a 
inner join table2 b 
    on a.cde=b.cde 
inner join table3 c 
    on a.cde=c.cde 
where a.Bcde='TVM' GROUP BY a.cde; 

注:其工作正常,如果(其中a.Bcde='TVM'),但不與任何其它branch_code 「Bcde

TVM有幾條記錄(只有40條記錄)

但是,如果我給(where a.Bcde='CBE')它不工作 - 需要很長時間,並給予conn。呃。

爲了您的信息,其haivng多個記錄:

6000+ records in table1 
50000+ records in table2 
100000+ records in table3 

如何處理這種情況?期待您的寶貴回覆。

關於, Sensa。

+1

您正在對100k條記錄進行總計,也許這可能會很慢。你可以執行一個'SELECT sum(Amt)FROM表,其中Bcde ='CBE'? – mamadrood 2012-04-20 19:44:28

+0

是的。如:select a.cde,a.name,count(b.TransID)as t_cnt, sum(c.Amt)as c_sumofamt from table1 a inner join table2 b on a.cde = b.cde inner join表3 c on a.cde = c.cde 其中a.Bcde ='CBE'GROUP BY a.cde; – Sensa 2012-04-20 19:48:49

+0

嘗試執行我給你的線路,看看服務器是否以可接受的時間進行響應。 – mamadrood 2012-04-20 19:52:25

回答

0

首先我想感謝所有在這裏發表你的寶貴時間。

我從另一個論壇的人的幫助下得到了解決方案。

解決辦法是:

select a.cde,a.name,count(b.TransID) as t_cnt, 
     sum(c.Amt) as c_sumofamt 
from table1 a 
inner join table2 b 
    on a.cde=b.cde 
inner join table3 c 
    on 

b.cde = c.cde

where a.Bcde='TVM' GROUP BY a.cde; 

第二內連接。他們建議我從第二張桌子加入第三張桌子 - 現在工作得很好。

但我不知道如果我使用a.cbe = c.cde而不是b.cde = c.cde,會有什麼區別?

如果有人知道請與我分享。

期待您在這方面的寶貴回覆。

相關問題