Puis-je joindre des tables et éviter l'utilisation de distinct dans la requête MySQL suivante? Invite_by_id affiche l'identifiant de l'utilisateur qui a invité cet utilisateur.Comment optimiser une requête imbriquée?
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;
Pourquoi auriez-vous besoin de distinct? Il me semble que l'utilisateur X ne devrait être autorisé que par l'utilisateur Y * one * time. –
@Lieven Puisque la table est jointe deux fois, vous pouvez obtenir des lignes en double. –