¿De qué manera puedo unir mesas y evitar el uso de distinct en la siguiente consulta MySQL? invited_by_id muestra la identificación de usuario de quién invitó a este usuario.¿Cómo optimizar una consulta anidada?
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;
¿Por qué necesitarías distinguir? Me parece que al usuario X solo se le debe permitir que sea invitado por el usuario Y * one * time. –
@Lieven Dado que la tabla se está uniendo dos veces, puede obtener filas duplicadas. –