Hola,
Quizás esta sea una pregunta sencilla, pero por más pruebas que hago no doy con el resultado y ya casi se me va el tiempo de entrega del proyecto.
- Tengo una tabla "users", donde está toda la información del usuario
- Una tabla "groups" donde están los posibles grupos a los que puede pertenecer un usuario.
- Una tabla "users_groups" que enlaza "users" y "groups" donde registro los usuarios que ya están participando de un grupo determinado.
- Una tabla "pending" donde tengo los usuarios que han sido referidos, de ellos solo tengo nombre y email.
¿Qué quiero?
Quiero para cada grupo, su nombre, el número de miembros y el número de pendientes.
Los grupos y sus miembros los obtengo sin problemas con:
Código SQL:
Ver originalSELECT g.`id_group`, g.`groupname`, COUNT(g.`groupname`) AS `members`
FROM `groups` g
LEFT JOIN `users_groups` ug ON (ug.`group_id` = g.`id_group`)
GROUP BY g.`groupname`
resultado:
id_group groupname members
19 aguilas 1
20 osos 2
18 gatos 1
Pero cuando quiero saber los pendientes ya me da un número equivocado:
Código SQL:
Ver originalSELECT g.`id_group`, g.`groupname`, COUNT(g.`groupname`) AS `members`, COUNT(p.`name`) AS `pending`
FROM `groups` g
LEFT JOIN `users_groups` ug ON (ug.`group_id` = g.`id_group`)
LEFT JOIN `pending` p ON (p.`group_id` = g.`id_group`)
GROUP BY g.`groupname`, p.`name`
resultado:
id_group groupname members pending
19 aguilas 1 0
20 osos 2 0
18 gatos 1 1
18 gatos 1 1
esperado:
id_group groupname members pending
19 aguilas 1 0
20 osos 2 0
18 gatos 1 2
¿Qué estoy haciendo mal?
Saludos y gracias!!!