Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kania

Pegar utimo Registro no banco

Recommended Posts

Olá pessoal,

 

Gente to com um pepino dos grandes aqui para resolver,

 

Vejam me pediram para montar uma tabela de cadastro, porem estes cadastros devem ser divididos em 2 grupos, em sistema de árvore, tipo binário conforme a imagem abaixo

 

Imagem Postada

 

 

Ai preciso epgar e dar um select na tabela para pegar o utimo registro cadastrado dependendo do lado que foi feito oc adastro, ai fiz assim:

 

SELECT MAX(IdConsultor) as IdConsultor FROM cad_consultor WHERE IdPatrocinador = 1 and PERNACADASTRO = 'E'

Porem a consulta não esta trazendo o ID que realmente eu preciso como referencia para cadastrar o novo cliente, deixa eu ver se consigo explicar usando a imagem acima

 

com esta imagem consigo demonstrar bem um erro que esotu tendo, iamginemos que o ID:1 primeiro do topo resolva cadastrar alguém do seu lado esquerdo, este deveria cair abaixo do ID:8 (8.5.5) e sua identificação ficaria (12.1.8) 12 seu ID, 1 seu patrocinador, 8 seu Ascendente, para tentar pegar o ID do ascendente que estou tentando utilizar o MAX mas ou eu estou fazendo a consulta de forma errada ou não é com MAX que se faz ou ainda eu precise colocar no banco alguma informação para que a consulta entenda que quando eu peço para pegar o MAX ID do banco de um determinado lado é somente a parte de fora daquela linha e não contar a parte de dentro da linha

 

tipo parte de fora seria os cadastros (Lado esquerdo: 2.1.1, 4.1.2, 5.2.4, 8.5.5 - Lado Direito: 3.1.1, 6.3.3)

Lado de dentro (chamada de perna interna) (Lado Esquerdo: 7.2.2 - Lado Direito: 9.3.3, 10.9.3, 11.3.10)

 

O que corre então é isto quando eu dou o Select Max.. ele pega tudo que for referente aquele lado que contenha a identificação 'D' OU 'E' Esquerda ou Direita.

 

Pessoal agguem sabe como resolver este caso? Desde já agradeço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma vez esses malditos esquemas de piramide pra pegar trouxa...

 

Que coisa eh essa de esquerda e direita? um ponto nao pode ter 3 descendentes?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Guiesta, obrigado por sua resposta, porem não entendi sua colocação, sobre "um ponto nao pode ter 3 descendentes"

 

Na verdade um patrocinador pode ter quantos Descendentes ele quizer, pelo que me passaram, porem,como se trata de uma rede binária, o cadastro tem que respeitar o derramamento, logo quando o cara for cadastrar alguém ele deve cair ou no lado direito ou no lado esquerdo conforem a escolha dele só que abaixo do utimo ID cadastrado em um dos lados, e sempre eplos lados de fora, nunca por dentro, ai que a coisa esta ferrando, porque quando eu dou o MAX para pegar o utimo registro ele pega sim o utimo registro só que o utimo referente aquel patrocinador, enão efetivamente o utimo daquele lado.

 

To colocando aqui a modelagem do banco que eu fiz caso você queira dar uma olhada se tem algo errado

 

CREATE TABLE `cad_consultor` (
  `IdConsultor` int(11) NOT NULL AUTO_INCREMENT,
  `IdPatrocinador` int(11) DEFAULT NULL,
  `IdAscendente` int(11) DEFAULT NULL,
  `Nome` varchar(150) DEFAULT NULL,
  `Email` varchar(150) DEFAULT NULL,
  `DataNascimento` date DEFAULT NULL,
  `Senha` varchar(30) DEFAULT NULL,
  `Sexo` varchar(1) DEFAULT NULL COMMENT 'F=Femenino, M=Masculino',
  `TipoPessoa` varchar(1) DEFAULT NULL COMMENT 'F = Física, J = Jurídica',
  `CpfCnpj` varchar(18) DEFAULT NULL,
  `Rg` varchar(25) DEFAULT NULL,
  `Cep` varchar(10) DEFAULT NULL,
  `Endereco` varchar(255) DEFAULT NULL,
  `Numero` varchar(10) DEFAULT NULL,
  `Complemento` varchar(50) DEFAULT NULL,
  `Bairro` varchar(50) DEFAULT NULL,
  `Cidade` varchar(50) DEFAULT NULL,
  `Estado` varchar(2) DEFAULT NULL,
  `Pais` varchar(25) DEFAULT NULL,
  `TelRes` varchar(13) DEFAULT NULL,
  `TelCel` varchar(13) DEFAULT NULL,
  `Banco` varchar(100) DEFAULT NULL,
  `Agencia` varchar(25) DEFAULT NULL,
  `Conta` varchar(25) DEFAULT NULL,
  `TipoConta` varchar(1) DEFAULT NULL COMMENT 'C = Corrente - P = Pupança',
  `NivelQuali` varchar(2) DEFAULT '1' COMMENT 'Nivel de Qualificação do Consultor - 1:Consultor, 11:Consultor Silver, 12:Consultor Gold, 13: Consultor Platinium, 21:Diretor Silver, 22:Diretor Gold, 23:Diretor Platinum, 31:Premium Asa 1, 32: Premium Asa 2, 33:Eagle',
  `PernaCadastro` varchar(1) DEFAULT NULL COMMENT 'D = Direita, E = Esquerda',
  `PernaPadrao` varchar(1) DEFAULT NULL COMMENT 'D = Direita, E = Esquerda',
  `DataCadastro` date DEFAULT NULL,
  `Acessos` varchar(20) DEFAULT '0',
  `Contrato` int(1) DEFAULT '1' COMMENT '1 = Sim 2= Não',
  PRIMARY KEY (`IdConsultor`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehe, se pudesse....mas infelizmente tem que seguir as regras solicitadas pelo cliente, to aqui em cima do manual do mysql para ver como corrigir isto, não sei se mecho no banco de dados, apesar que nem sei onde mecher tbm no bd, talvez adcionar mais um campo para que poça ser utilizado como condição, sei lá. hehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.