Доброе всем утро!
Такая проблема, делаю запрос который выбирает пользователей и считает количество записей с ними связанных в различных таблицах.
SELECT `member`.`id`, `member`.`name`, COUNT(`vl_arrival`.`pid`), COUNT(`vl_diary`.`unid`)
FROM `member`
LEFT JOIN `vl_arrival` ON `vl_arrival`.`vid` = `member`.`id`
LEFT JOIN `vl_diary` ON `vl_diary`.`vid` = `member`.`id`
GROUP BY `member`.`id`
ORDER BY `member`.`id` ASC
Работает нормально, если встречаются элементы COUNT только из одного запроса, а если счётчики выдают не 0 в обоих джоинах результаты их множатся друг на друга и числа становяться завышены + равны, COUNT(`vl_arrival`.`pid`) = COUNT(`vl_diary`.`unid`), хотя такого никак не может быть. =\ А мне как на зло надо в сумме 5 таких счетчиков, типа Юзер Вася написал 1 пост, загрузил 200 фото и т.п.
EXPLAIN:
select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE member ALL NULL NULL NULL NULL 32 Using temporary; Using filesort
1 SIMPLE vl_arrival ref vid,vid_bid vid 4 cy2.member.id 43
1 SIMPLE vl_diary ref index index 4 cy2.member.id 2 Using index
И файлсорт странный, хотя меня он мало беспокоит - результат запроса не верный.
Я определённо что-то не так понимаю видимо, помогите разобраться! Заранее благодарю!