2011-11-05 65 views
0

最近,我試圖通過加入不必要的查詢來減少查詢的數量。從一個查詢中的單個mysql表中選擇行和總和

在此我來,我應該用兩個查詢的查詢非常情況下

:一個得到所有選項之和,另一個是同桌

SELECT `id`, `text`,`count`, SUM(`count`) AS sumoption 
    FROM _options 

的行但是,當我m試圖運行這個查詢,結果將只有一行,我認爲它是因爲我添加了SUM(count)。我知道我應該使用group by來解決這個問題,但表格模式並不那麼簡單。

id text     count 
1 Honda     1   
2 Benz     0   
3 Toyota     1 

現在總和應該是2,它應該列出所有選項及其值。
我該如何做到這一點?


PS。 : 預期的結果:

Honda     1   
Benz     0   
Toyota     1 
Sum of counts : 2 
+0

目前尚不清楚爲什麼你可以」 t使用'GROUP BY'請發佈一個例子,說明你在上面發佈的數據的輸出結果。 –

+0

正如我所說的輸出將是單行,我想列出一個循環中的所有行 –

+1

我討厭MySQL允許聚合函數沒有'group by'子句的事實。 –

回答

3

像這樣看起來更符合邏輯:

SELECT m.id, m.name, count(o.man_id) AS sumoption 
FROM _options o 
RIGHT JOIN manufacturers m ON (m.id = o.man_id) 
GROUP BY m.id WITH ROLLUP 

你的情況,你也可以使用:

SELECT id, `text`, SUM(`count`) AS sumoption 
FROM _options 
GROUP BY id WITH ROLLUP 
+0

完美的解決方案,「彙總」的事情是真棒男人 –

+0

@MacTaylor,當我發現這一點時,我做了一個幸福的跳躍。 – Johan

+0

不,這是我的錯誤,它沒有完全工作,它只帶來兩行同名!我很累,我沒有注意到。 –

相關問題