Добрый день.
Необходимо получить всех аудиторов, которые связаны с определенной возрастной группой, при условие что в их связи суммарное кол-во в каждой группе больше (колонка value таблица 3);
Проблема из-за таблицы 4, т.к она при объедение дает дубли на таблицу 2, и отсюда при дальнейшем объедение и суммирование получается сумма у учетом дублей, ни группировка на DISTINCT - дубли не убирает. А если без суммирование вывести результат, но с группировкой или DISTINCT, то дубли пропадают, но не при суммирование. Как быть?
1. аудиторы (auditors)
Ее структура тут не важна...
2. возрастные группы (audiences)3. карта связи возрастной группы и аудитора (auditors_audiences_map)4. раскрытия промежутка возрастной группы (audiences_range_map)
Примеры запросов, с группировкой и без..
(
SELECT am2.id, SUM(am2.value)
FROM auditors_audiences_map AS am2
LEFT JOIN audiences_range_map AS a2 ON (a2.value BETWEEN 13 AND 17)
WHERE am2.audience_id=a2.audience_id
GROUP BY am2.audience_id
)
(
SELECT am2.id, am2.value
FROM auditors_audiences_map AS am2
LEFT JOIN audiences_range_map AS a2 ON (a2.value BETWEEN 13 AND 17)
WHERE am2.audience_id=a2.audience_id
GROUP BY am2.audience_id
)
результаты выполнения:
1. С суммированием и группировкой
2. Без суммирование и группировкой
3. Без суммирование и без группировки
Как быть, не пойму в чем проблема...
Явно при суммирование, группировка не учитывается, но как избежать, не могу придумать :(