Olá, estou com a seguinte problemática. Fiz uma micro rede-social para os gestores, onde inicialmente o cadastro é realizado somente feito via convite, assim “medindo” a influência de cada um. Meu problema está no ranking que atualmente realiza a contagem dos convites aceitos por cada pessoa e a que tiver mais convites aceitos, obviamente fica no topo do ranking:
SELECT
u.usr_id, b.ref_id, u.nome, b.c_hab, count(*) as qnt
FROM
tbl_user AS u
INNER JOIN
tbl_user b ON u.usr_id = b.ref_id
WHERE b.c_hab = 1
GROUP BY u.nome
ORDER BY qnt DESC;
Meu problema surgiu quando solicitaram que eu contasse os convites diretos, ou seja, o gestor mandou para fulano1 (iremos chamar de nível 1), os convites que o fulano1 mandou (nível 2) e assim por diante. É confuso de explicar, mas basicamente é contar no ranking os convites dos convites, e não tenho a mínima noção de como realizar isso…
Segue a tabela de usuários para mais aprofundamento nos detalhes:
CREATE TABLE `tbl_user` (
`usr_id` smallint(6) NOT NULL,
`ref_id` smallint(6) DEFAULT NULL, //Aqui é onde são armazenados as IDs de quem convidou você
`nome` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`dt_nascimento` date DEFAULT NULL,
`cel` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
`endereco` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`numero` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`senha` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`foto` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`token` char(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`c_hab` char(1) COLLATE utf8_unicode_ci DEFAULT '0',
`nivel` char(1) COLLATE utf8_unicode_ci DEFAULT '1',
`candidato` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL,
`dt_cad` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Agradeço desde já!

