Количество левых соединений в запросе - PullRequest
3 голосов
/ 23 ноября 2010

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

Код, который я использую:

ВЫБРАТЬ. *,
count (b.parentid) AS catscount,
count (c.id) AS itemscount
ОТ (jos_foc_downl_categories КАК ЛЕВОЕ СОЕДИНЕНИЕ jos_foc_downl_items КАК ВКЛ c.catid = a.id)
ЛЕВОЕ СОЕДИНЕНИЕ jos_foc_downl_categories AS b ON b.parentid = a.id
ГДЕ a.parentid = 0
GROUP BY a.id

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

Что не так с этим? Спасибо!

1 Ответ

7 голосов
/ 23 ноября 2010

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

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