Могу ли я каким-то образом присоединиться к таблицам и избежать использования отдельных в следующем запросе MySQL. invite_by_id показывает идентификатор пользователя, который пригласил этого пользователя.Как оптимизировать вложенный запрос?
SELECT
user1.id, count(distinct user2.id) AS theCount, count(distinct user3.id) AS theCount2
FROM
users AS user1
LEFT OUTER JOIN
users AS user2 ON user2.invited_by_id=user1.id
LEFT OUTER JOIN (
SELECT id, invited_by_id FROM users WHERE signup_date >= NOW() - INTERVAL 30 DAY
) AS user3 ON user3.invited_by_id=user1.id
GROUP BY user1.id;
Зачем вам нужен отдельный? Мне кажется, что пользователю X разрешено приглашать только пользователем Y * one * time. –
@Lieven Поскольку таблица соединяется дважды, вы можете получить повторяющиеся строки. –