logo DevMedia  
Home Entenda o site Revistas Canais Cursos Palestras Suporte Fórum +Serviços Assine Compre Créditos

Edição do Mês
  Fórum DevMedia
Fórum de Discussão
Conheça também o NOVO fórum da DevMedia, no endereço: www.devmedia.com.br/forum
O novo fórum possui diversas vantagens! Saiba mais em
www.devmedia.com.br/articles/viewcomp.asp?comp=14726
Estamos sempre trabalhando na melhora do site como um todo! Bons códigos!
Equipe DevMedia

 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos  RegistrarRegistrar   
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 
Edição do Mês

max em select
 
Novo Tópico   Responder Mensagem    Fórum DevMedia - Índice do Fórum -> MySQL
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
lordkania
Novato


Registrado em: Quarta-Feira, 11 de Fevereiro de 2009
Mensagens: 3

MensagemEnviada: Qua Fev 11, 2009 6:10 pm    Assunto: max em select Responder com Citação

Olá pessoal,

Minha dúvida é como eu consigo pegar o utimo valor de um dos grupos (DIREITO OU ESQUERDO), se eu der um select simples, tipo:

C?o:
SELECT MAX(IdConsultor) AS ASCENDENTE from cad_consultor where PernaCadastro = 'D'


Ele me traz certinho o utimo registro, porem eu preciso limitar a busca com o critéio do Id de quem esta fazendo cadastro na hora, vou tentar explicar melhor.

temos 2 grupoos

C?o:
VOCE
===================
grupo1      |       grupo 2


Abaixo deste dois grupos é que entrram os outros cadastros, esotu tentando colocar de forma gráfica para ficar mais simples de entender, mas é claro que no banco de dados não é assim que vai estar, no banco criei alguns campos para ajudar a fazer as buscas

IdConsultor > Id do consultor cadastrado
IdPatrocinador > Id de quem indicou a pessoa para se cadastrar
IdAscendente > Id da pessoa que fica logo acima dentro da rede, não necessáriamente que é quem indicou, obrigatório o novo cadastrado ficar dentro da equipe do indicador, porem não precisa que ele seja o Ascendente
PernaCadastro > Grupo onde ele será cadastrado, direita ou esquerda
PernaPadrao > Caso o usuário queria ele poderá deixar umdos grupos como padrão para cadastrar, ou para esquerda ou para direita, o código vai pegar o padrão definido.

Como notou o meu problema esta em que eu não estou conseguindo ontar um selct que traga o id do ascendente, eu consigo pegar o MAX id dentro do grupo esquerdo ou dirieto, porem nem sempre ele pega correto, porque se notou teri casos em que um novo cadastro poderá entrar por dentro do grupo, veja

C?o:
VOCE ID: 1
==== GRUPO ESQUERDO  ================== GRUPO DIREITO ===========
               ID: 2-1-1                     |                   ID:3-1-1
         ID:4-1-2                            |                           ID:7-3-3
     ID:5-2-4  |  ID:6-4-4                   |                     ID:8-7-7       ID:9-3-1


Não sei se o desenho deu para entender, os número coloquei assim

primeiro número = no ido cadastrado
segundo número = id do patrocinador
terceiro número = id do ascendente

Note que oa scendete sempre vai ser o cara que esta logo acima na rede

Vamos pegar o exemplo do ID:5 ele tem patrocinador o ID 2 e seu ascendente é o ID 4

quando eu faço a contagem para pegar o id do ascendente neste caso o 4 ele pega o 2 ao envez do 4, porque como o ID ainda não tem nenhum cadastro "Null" acredito que ele se perde, nos casos em que o cara já tem um cadastro ao menos ele pega certinho

Sei lá o que ta dando de errado pessoal, fico grato se alguém puder me auxiliar, obrigado

caso precisem testar ai vai a estrutura do banco

C?o:
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;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
lordkania
Novato


Registrado em: Quarta-Feira, 11 de Fevereiro de 2009
Mensagens: 3

MensagemEnviada: Qua Fev 11, 2009 6:52 pm    Assunto: imagem para facilitar Responder com Citação

para facilitar estou colocando uma imagem explicativa

Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
lordkania
Novato


Registrado em: Quarta-Feira, 11 de Fevereiro de 2009
Mensagens: 3

MensagemEnviada: Qua Fev 11, 2009 7:10 pm    Assunto: Re: imagem para facilitar Responder com Citação

lordkania escreveu:
para facilitar estou colocando uma imagem explicativa



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.Cool 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, porque quando eu dou um

C?o:
SELECT MAX(IdConsultor) AS ASCENDENTE from cad_consultor where PernaCadastro = 'e' and IdPatrocinador = 1


ele traz como resultado de ID para ser Ascendente o ID:4 (4.1.2) ele não consegue pegar o correto que seria 8.5.5
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    Fórum DevMedia - Índice do Fórum -> MySQL Todos os horários são GMT - 3 Hours
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibído.
Responder Tópicos Proibído
Editar Mensagens: Proibído.
Excluir Mensagens: Proibído.
Votar em Enquetes: Proibído.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB