2010-11-23 40 views
3

我有一個下載組件,並希望類別提前顯示子目錄和項目數。這兩個作品中的1個,但是當試圖獲得這兩個作品時,結果是兩者的相乘。2 LEFT JOINS在查詢中計數

的代碼我使用:

選擇一個*,
計數(b.parentid)AS catscount,
計數(c.id)AS itemscount
FROM(jos_foc_downl_categories AS一個LEFT JOIN。 jos_foc_downl_items AS C ON c.catid = a.id)
LEFT JOIN jos_foc_downl_categories AS b關於b.parentid = a.id
WHERE a.parentid = 0
GROUP BY A.ID

對於具有4個子類別和5個文件的類別,catscount爲20,對於itemscount爲20,結果如此。

這是怎麼回事?謝謝!

回答

7

您正在計算所有行,包括重複的值。使用DISTINCT來只計算一次不同的值:

SELECT a.*, 
count(DISTINCT b.parentid) AS catscount, 
count(DISTINCT c.id) AS itemscount 
.... 
+0

感謝您的快速回復!這就像魅力一樣。 – Bert 2010-11-23 14:36:15