Задавайте вопросы, мы ответим
Вы не зашли.
Чё-то споткнулся со следующей ситуацией.
Есть 3 таблицы: одна главная и 2 связные. Нужно посчитать сколько данных находится в связных таблицах по каждой записи главной. Не могу состряпать запрос, по первой таблице считает нормально, а по второй - хрень какую-то считает.
Собссна юзаю запрос:
SELECT `routes`.`id` , `routes`.`name` , `routes`.`credits` , `routes`.`all_signs` , COUNT( `users`.`id` ) AS `users` , COUNT( `routes_signs`.`sign_id` ) AS `signs` FROM `routes` LEFT JOIN `users` ON `users`.`route_id` = `routes`.`id` LEFT JOIN `routes_signs` ON `routes_signs`.`route_id` = `routes`.`id` GROUP BY `routes`.`id` ORDER BY `users` DESC
Пробовал "GROUP BY `users`.`route_id`, `routes_signs`.`route_id`" - результат тот же.
Или без подзапросов или разбиения запроса на части не обойтись?
ЗЫ Не дружу с разницей LEFT|RIGHT|INNER|OUTER, может решение как раз там...
Неактивен
Буквально на прошлой неделе был этот же вопрос
Попробуйте оставить два объединения, но убрать COUNT, тогда становится
понятно, почему считает плохо — у Вас получается произведение строк,
которое Вы и просчитываете. Подзапросы Вас спасут. Ну или COUNT(DISTINCT id)
если уникальные строки устроят.
Неактивен
paulus написал:
Буквально на прошлой неделе был этот же вопрос
Да, я видел темку тут недалеко, но там решением было применение UNION и запрос какой-то перекрученый и страшный получился))
paulus написал:
Попробуйте оставить два объединения, но убрать COUNT, тогда становится
понятно, почему считает плохо — у Вас получается произведение строк,
которое Вы и просчитываете.
Глянул, действительно. Я так понимаю, это всегда актуально при группировке данных по нескольким таблицам?
paulus написал:
Подзапросы Вас спасут.
Ну эти звери вроде любую проблему решат)))
paulus написал:
Ну или COUNT(DISTINCT id) если уникальные строки устроят.
Таки устроят, и таки помогло, пасиба
Неактивен