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 original
SELECT 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 original
SELECT 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!!!