2010-11-23 7 views
3

У меня есть компонент загрузки и вы хотите, чтобы категории отображали субкоды и количество элементов заранее. 1 обеих работ, но при попытке получить оба результата результат умножается на оба.2 LEFT JOINS count в запросе

код я использую:

выбрать *,
счетчик (b.parentid) А.С. catscount,
счетчик (c.id) КАК itemscount
ОТ (jos_foc_downl_categories как левый JOIN. jos_foc_downl_items как С = О c.catid a.id)
LEFT JOIN jos_foc_downl_categories AS B ON b.parentid = a.id
ГДЕ a.parentid = 0
ГРУППА ПО a.id

Это результат для категории с 4 подкатегориями и 5 файлами в количестве 20 для catscount и 20 для itemscount.

Что случилось с этим? Благодаря!

ответ

7

Вы считаете все строки, включая дублированные значения. Используйте DISTINCT только для подсчета каждого отдельного значения один раз:

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

Благодарим за быстрый ответ! Это работает как шарм. – Bert 2010-11-23 14:36:15

Смежные вопросы