J'ai deux tables.Requête MySQL COUNT join jointe
La première table est la table membre
MEMBER TABLE
ID | NAME
1 | User
2 | Another User
3 | Some other User
et la deuxième table est amis
FRIENDS TABLE
ID | member_id | Friend Name | Notified
1 | 1 | Friend #1 | 0
2 | 1 | Friend #1 | 1
3 | 2 | Friend #1 | 0
4 | 1 | Friend #1 | 1
5 | 2 | Friend #1 | 1
Ce que je veux faire est d'obtenir les informations de table des membres, mais aussi pour obtenir le total notifié amis pour chaque membre.
Ce que je l'ai fait jusqu'à présent est que
SELECT
M.ID
M.NAME
COUNT(F.notified)
FROM
MEMBER AS M
LEFT JOIN
FRIENDS AS F
ON
F.member_id = M.id
WHERE
F.notified = 1
GROUP BY
M.id
Mais cela ne fonctionne pas pour moi, parce que si j'ai un membre avec des amis non notifiées, la requête n'a pas inclus dans les résultats.
Dans le code ci-dessus par exemple le membre avec ID 3 ne sera pas inclus dans mes résultats.
Une idée sur la façon de modifier cette requête afin de retourner même les membres sans amis notifiés?
Amitiés Merianos Nikos
Nice. Mais vous n'avez même pas besoin du 'GROUP BY M.id' avec cette approche. –
Cela va exécuter une sous-requête séparée pour chaque enregistrement dans la table des membres, ce qui va probablement commencer à affecter les performances assez rapidement à mesure que la table des membres se développe. La réponse de Ypercube est la meilleure façon de le faire, car elle n'aura pas ces problèmes. – Braiba