Select em varios niveis de uma vez só
Olá pessoal,
seguinte, estou precisando fazer um select no bd que pegue varios niveis diferentes dentro da tabela, vou explicar melhor:
no bd estão cadastrados varios usuário, porem alguns destes usuários são indicados por outros logo seria:
PRINCIPAL (NIVEL 1): João
NIVEL 2 (OS INDICADOS PELO JOÃO): MARIA | PEDRO | JOSÉ | LEANDRO
NIVEL 3 (OS INDICADOS OU PELO JOÃO OU POR QUALQUER OUTRO ASSOCIADO ACIMA E ESTES CAIRAM ABAIXO DO SEGUNDO NIVEL)
NIVEL 4 (OS INDICADOS POR QUALQUER OUTRO ASSOCIADO ACIMA E ESTES CAIRAM ABAIXO DO SEGUNDO NIVEL)
NIVEL 5 (OS INDICADOS POR QUALQUER OUTRO ASSOCIADO ACIMA E ESTES CAIRAM ABAIXO DO SEGUNDO NIVEL)
E assim por diante se segue a rede, sendo uma rede chamada matriz forçada de 5 ou seja:
joão cadastra 5 diretos a ele (ou não ele pode tbm receber associados abixo dele que forma outras pessoas acima que cadastraram), o importante de se saber é que os niveis serão sempre formados assim
VOCÊ
NIVEL 1 = 5 ASSICOADOS
NIVEL 2 = 25 ASSOCIADOS
NIVEL 3 = 125 ASSOCIADOS
NIVEL 4 = 625 ASSOCIADOS
NIVEL 5 = 3125 ASSOCIADOS
E ASSIM POR DIANTE, NENHUM ASSOCIADOS TEM COMO TER MAIS DE 5 DIRETOS NA SUA REDE
BOM AI VEM MINHA DÚVIDA COMO FAZER UM SELECT QUE PEGUE ATÉ O QUARTO NIVEL (5 + 25 + 125 + 625) LISTAR ELES, SEM PRECISAR FAZER SELECT POR SELECT, SE FOR FAZER SELECT POR SELECT IMAGINA SÃO MAIS DE 700 SELECTC, HEHEHE, FORA QUE ACABRIA COM O BANCO DE DADOS (MUITO LENTO) A ESTRUTA DA TABELA ESTA ASSIM
IDASSOCIADO (ID DO NOVO CADASTRADO)
NOME (NOME DO NOVO CADASTRADO)
IDPATROCINADOR (ID DE QUEM ESTA INDICANDO)
POSICAOASSOCIADO (POCIÇÃO DO NOVO ASSOCIADO NA REDE CONFORME O LUGAR VAGO NELA, ESTE VALOR VAI DE 1 A 5, POR SER 5 CADASTROS NO MÁXIMO DIRETOS A CADA ASSOCIADO)
SÃO ESTES OS DADOS QUE PRECISO LISTAR COM BASE SEMPRE NO NOVO ASSOCIADO O ID DO SEU PATROCINADOR E SUA POSIÇÃO NA ÁRVORE, COMO FALEI ACIMA, VAI MAIS UM EXEMPLO
VOCÊ NA CABEÇA DA REDE = JOÃO
JOÃOC ADASTRA 3 PESSOAS FORMAM SEU NIVEL 1 FECHANDO AS POSIÇÕES 1,2,3 E MAIS 2 PESSOAS CAEM ABAIXO DELE CADASTRADAS POR ALGUÉM ACIMA DELE E FECHAM AS POSIÇÕES 4,5, FECHANDO ASSIM O PRIMEIRO NIVEL DO JOÃO
NO SEGUNDO NIVEL DO JOÃO NÃO PODE TER MAIS QUE 25 PESSOAS, ESTE PORQUE 5X5=25 SE CADA UM DOS 5 COLOCAR 5, SE NÃO COLOCAR O ESPAÇO FICA VAGO ATÉ ALGUÉM CADASTRAR OUTRO, NESTE CASO VOU LISTAR COMO POSIÇÃO VAGA OU EM ABERTA
Discussão (11)
Carregando comentários...