Я знаю, что это похоже на этот вопрос: MySQL Query - Sum one related table - Count another related table, но я не могу заставить это работать для меня.MySQL - подсчет записей в одной таблице и записей суммы в другой таблице
У меня есть 3 таблицы:
Event
Attendee
Gifts
Для каждого Event
мы должны суммировать количество Attendees
и общее количество Gifts
. Attendee
может или не может получить подарок.
я могу заставить его работать так, что если я игнорирую дар итоги, я получаю правильный ответ с этим запросом:
SELECT event.name AS name, count(*) AS num_attendee
FROM attendee
RIGHT JOIN event on event.id = attendee.event_id
WHERE event.company_id =6
GROUP BY event.id
Но я понятия не имею, как суммировать подарки (т.е. Gift.Amount
значения), данные для всех Attendees
для каждого события. Когда я пытаюсь просто присоединиться к таблице Gift
, основанной на event_id
, все цифры идут дурацкие.
У вас есть несколько входов и выходов образца? –
Возможно, вы получаете [декартовый продукт] (http://en.wikipedia.org/wiki/Cartesian_product), потому что atendees и подарки имеют более одной записи за event_id. Если это так, используйте [производную таблицу] (http://www.sqlteam.com/article/using-derived-tables-to-calculate-aggregate-values) для выполнения агрегации по дочерним таблицам, прежде чем вы выполните присоединиться к родительской таблице. –