2010-12-18 34 views
2

我的問題是關於左連接我試圖計算有多少人正在跟蹤某個項目。 (也可以是零個追隨者)
SQL選擇中的列的順序很重要嗎?

現在我可以得到它的工作的唯一途徑是通過增加

group by idproject 

我的問題是,如果一種方法來避免使用此,只選擇和隱式
設置該組選項。

SQL:

select `project_view`.`idproject` AS `idproject`, 
count(`track`.`iduser`) AS `c`,`name` 
from `project_view` left join `track` using(idproject) 

expected it count null爲零,但它不會出現在所有,
如果我忽略計數則顯示爲空在那裏沒有追隨者。

+2

您需要group by,以便聚合函數知道要計數的內容。選擇順序無關緊要。 – 2010-12-19 00:03:22

回答

3

如果你有一個WHERE子句來指定某個項目,那麼你不需要需要一個GROUP BY。

SELECT project_view.idproject, COUNT(track.iduser) AS c, name 
FROM project_view 
LEFT JOIN track USING (idproject) 
WHERE idproject = 4 

如果你想爲每個項目的計數,那麼你需要一個GROUP BY。

SELECT project_view.idproject, COUNT(track.iduser) AS c, name 
FROM project_view 
LEFT JOIN track USING (idproject) 
GROUP BY idproject 
+0

這就是我所做的,我認爲我可以在不明確使用「group by」的情況下完成類似的行爲。現在我明白了它的問題 – shevski 2010-12-19 00:14:21

1

是的選擇順序。出於性能原因,您(通常)希望首先限制選擇,以縮小數據集。這使得每個後續查詢都在較小的數據集上運行。

+0

雖然這可能是真的,但它確實涉及到我的問題,無論如何感謝提示。 – shevski 2010-12-19 00:19:54

相關問題