kania 0 Denunciar post Postado Agosto 6, 2008 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 Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Agosto 6, 2008 não sei se entendi muito bem... mas montei uma tabela com esta estrutura que você passou e preenchi com o seguinte: CREATE TABLE `associados` ( `IDASSOCIADO` int(11) NOT NULL AUTO_INCREMENT, `NOME` varchar(50) DEFAULT NULL, `IDPATROCINADOR` int(11) DEFAULT NULL, `POSICAOASSOCIADO` int(1) DEFAULT NULL, PRIMARY KEY (`IDASSOCIADO`), KEY `PATROCINADOR` (`IDPATROCINADOR`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1os dados da tabela são testes: IDASSOCIADO,NOME,IDPATROCINADOR,POSICAOASSOCIADO 1,"JOÃO",NULL,NULL 2,"MARIA",1,1 3,"JOANA",1,2 4,"PAULO",1,3 5,"PAULINA",1,4 6,"JOSI",1,5 7,"CARLA",2,1 8,"CARLINDA",2,2 o resultado da consulta foi este: IDASSOCIADO,NOME,IDPATROCINADOR,IDASSOCIADO,NOMEASSOCIADO,POSICAOASSOCIADO 1,"JOÃO",1,2,"MARIA",1 1,"JOÃO",1,3,"JOANA",2 1,"JOÃO",1,4,"PAULO",3 1,"JOÃO",1,5,"PAULINA",4 1,"JOÃO",1,6,"JOSI",5 2,"MARIA",2,7,"CARLA",1 2,"MARIA",2,8,"CARLINDA",2 E o SQL é este: SELECT A.IDASSOCIADO, A.NOME, B.IDPATROCINADOR, B.IDASSOCIADO, B.NOME AS NOMEASSOCIADO, B.POSICAOASSOCIADO FROM associados A INNER JOIN associados B ON B.IDPATROCINADOR = A.IDASSOCIADO ORDER BY A.IDASSOCIADO, B.POSICAOASSOCIADO está fazendo uma consulta, não lembro o nome, mas acho que é recursiva na mesma tabela. Como utilizei INNER JOIN, só vai listar associados que estão patrocinando. Pode trocar para LEFT JOIN para ver o outro resultado. só lembrando que esta consulta não vai limitar quantidade nem mostrar nível, ok? simplesmente vai listar os cabeças e seus associados. flw Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 6, 2008 Olá cassitos, bom primeiramente muito obrigado pela sua resposta e pela sua ajuda neste caso. Assim, utilizei o select em minha tabela, desculpe, tinha te passado os cabeçalhos das tabelas como exemplo, mas abaixo segue o selec com os nomes corretos. SELECT A.IDASSOCIADO, A.NOME, B.PATRONO, B.IDASSOCIADO, B.NOME AS NOMEASSOCIADO, B.POSICAO FROM associados2 A INNER JOIN associados2 B ON B.PATRONO = A.IDASSOCIADO ORDER BY A.IDASSOCIADO, B.POSICAO a estrutura da minha tabla completa é a seguinte CREATE TABLE `associados2` ( `IDASSOCIADO` int(11) NOT NULL auto_increment, `INSCRICAO` varchar(60) collate latin1_general_ci NOT NULL, `TIPO` varchar(2) collate latin1_general_ci NOT NULL default 'FL' COMMENT 'FL=Flutuante; AC=Associado; LV=Loja Virtual; CD=Clube Diamantes', `AD` int(11) NOT NULL default '0', `NOME` varchar(150) collate latin1_general_ci NOT NULL, `DATANASCIMENTO` date NOT NULL, `SENHA` varchar(60) collate latin1_general_ci NOT NULL, `ENDERECO` varchar(100) collate latin1_general_ci NOT NULL, `ENDNUMERO` varchar(10) collate latin1_general_ci NOT NULL, `COMPLEMENTO` varchar(100) collate latin1_general_ci NOT NULL, `BAIRRO` varchar(50) collate latin1_general_ci NOT NULL, `CIDADE` varchar(50) collate latin1_general_ci NOT NULL, `UF` varchar(2) collate latin1_general_ci NOT NULL, `CEP` varchar(10) collate latin1_general_ci NOT NULL, `TIPOPESSOA` char(1) collate latin1_general_ci NOT NULL COMMENT 'F=Física; J=Jurídica; N=Não Definido', `CPFCNPJ` varchar(20) collate latin1_general_ci NOT NULL, `RG` varchar(20) collate latin1_general_ci NOT NULL, `SEXO` char(1) collate latin1_general_ci NOT NULL COMMENT 'M=Masculino; F=Feminino; N=Não Definido', `TELEFONERES` varchar(30) collate latin1_general_ci NOT NULL, `TELEFONECOM` varchar(30) collate latin1_general_ci NOT NULL, `CELULAR` varchar(30) collate latin1_general_ci NOT NULL, `EMAILCONTATO` varchar(150) collate latin1_general_ci NOT NULL, `EMAILPAGAMENTO` varchar(150) collate latin1_general_ci NOT NULL, `BANCO` varchar(100) collate latin1_general_ci NOT NULL, `COMPLEMENTOBANCO` varchar(150) collate latin1_general_ci NOT NULL, `AGENCIA` varchar(30) collate latin1_general_ci NOT NULL, `CONTA` varchar(30) collate latin1_general_ci NOT NULL, `NIVELASSOCIADO` int(11) NOT NULL default '0', `PATRONO` int(11) NOT NULL, `ASCENDENTE` int(11) default NULL, `POSICAO` int(11) default NULL, `SINDICATO` int(11) default NULL, `FECHAMENTO` int(11) NOT NULL, `TIPOCONTA` varchar(50) collate latin1_general_ci NOT NULL, `DATACADASTRO` date NOT NULL, `IDASSOCIADOSISTEMA` int(11) NOT NULL default '0' COMMENT '0=Não Lido; -1=Lido Em Espera; Outro Valor=Codigo do Sistema e Processado', `LOGIN` varchar(100) collate latin1_general_ci NOT NULL, PRIMARY KEY (`IDASSOCIADO`), KEY `TIPO` (`TIPO`), KEY `IX_INSTIPAD` (`INSCRICAO`,`TIPO`,`AD`), KEY `IDASSOCIADOSISTEMA` (`IDASSOCIADOSISTEMA`), KEY `LOGIN` (`LOGIN`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2134; Surgiu uma dúvida, como poderei lisatar todas as informações de um associado específico, pois esta consulta que stou tentando fazer estárta disponivel em uma área restrita só dele, sei que deverei fazr um (where patrono=idassociado and nivelassociado in ('1','2','3','4','5') ) algo deste tipo, porem se eu fizer isto será listado somente os associaods diretos dele que corresponderia ao nivel 1, e não todos seguindo a rede até o quarto nivel que onde a empresa estará efetuando o pagamento das bonificações dos associados, e tmabém a outra dúvida é como listar isto na tabela dentro do site dividindo por nivel, tipo: NIVEL 1 ================================ JOSÉ JOÃO PEDRO ANTONIO ANA ================================ NIVEL 2 ================================ SANTOS CARLOS MARIA SOLANGE CARLOS SANTOS CARLOS MARIA SOLANGE CARLOS SANTOS CARLOS MARIA SOLANGE CARLOS CARLOS SANTOS CARLOS MARIA SOLANGE CARLOS SANTOS CARLOS MARIA SOLANGE CARLOS ================================= NIVEL 3 ================================= E ASSIM PO DIANTE ATÉ O NIVEL 4, PORQUE DENTRO DO SELECT QUE VOCÊ ME PASSOU NÃO CONSEGUI ENTENDER COMO PODEREI FAZER ISTO, POIS ELE IRA LISTAR TUDO QUE ESTA NA TABELA. A NÃO SER QUE DEPOIS DETE SELECT EU RECRIE SELECTS INDEPENDENTES PARA LISTAS CADA NIVEL, QUAL A MELHOR SUGESTÃO PARA ESTE CASO? caso queira testar com a base de dados populada segue o link http://www.conquistta.com.br/2010/conquistta.txt Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Agosto 6, 2008 rapaz... :wacko: após vários testes consegui chegar só nesta consulta (ainda usando a primeira estrutura que fiz): #SELECT para consultar apenas os associados nível 1 SELECT IDASSOCIADO, NOME, NIVELASSOCIADO FROM associados WHERE IDASSOCIADO = 1 #UNION para consultar apenas os associados nível 2 UNION SELECT B.IDASSOCIADO, B.NOME, B.NIVELASSOCIADO FROM ( SELECT IDASSOCIADO FROM associados WHERE IDASSOCIADO = 1 ) AS A INNER JOIN associados B ON B.IDPATROCINADOR = A.IDASSOCIADO #UNION para consultar apenas os associados nível 3 UNION SELECT C.IDASSOCIADO, C.NOME, C.NIVELASSOCIADO FROM ( SELECT IDASSOCIADO FROM associados WHERE IDASSOCIADO = 1 ) AS A INNER JOIN associados B ON B.IDPATROCINADOR = A.IDASSOCIADO INNER JOIN associados C ON C.IDPATROCINADOR = B.IDASSOCIADO #UNION para consultar apenas os associados nível 4 UNION SELECT D.IDASSOCIADO, D.NOME, D.NIVELASSOCIADO FROM ( SELECT IDASSOCIADO FROM associados WHERE IDASSOCIADO = 1 ) AS A INNER JOIN associados B ON B.IDPATROCINADOR = A.IDASSOCIADO INNER JOIN associados C ON C.IDPATROCINADOR = B.IDASSOCIADO INNER JOIN associados D ON D.IDPATROCINADOR = C.IDASSOCIADO o resultado foi assim: IDASSOCIADO,NOME,NIVELASSOCIADO 1,"JOÃO",1 2,"MARIA",2 3,"JOANA",2 4,"PAULO",2 5,"PAULINA",2 6,"JOSI",2 7,"CARLA",3 8,"CARLINDA",3 9,"MARIANA",4todos estes estão associados ao joão, mesmo não sendo diretamente. no fim das contas, cada UNION representa de certa forma um nível (apesar de não ser uma regra), você pode por exemplo trocar o código do associado (que neste caso foi o que considerei como PRINCIPAL), então todos abaixo dele serão listados, mesmo que façam parte de filho do filho. só que nesta consulta, diferente da outro, não vai exibir o ID do patrocinador. mas você pode modificar a consulta à vontade. quanto a apresentação por nível, pode ser que esta consulta até resolva uma parte do problema, mas acredito que vai precisar fazer umas jogadas na programação. se ainda não for este o resultado... posta ae... http://forum.imasters.com.br/public/style_emoticons/default/yay.gif Eis um exemplo de acordo com o modelo de suas tabelas (peguei um IDASSOCIADO que tem registros abaixo dele): #SELECT para consultar apenas os associados2 nível 1 SELECT IDASSOCIADO, NOME, NIVELASSOCIADO, PATRONO FROM associados2 WHERE IDASSOCIADO = 1477 #UNION para consultar apenas os associados2 nível 2 UNION SELECT B.IDASSOCIADO, B.NOME, B.NIVELASSOCIADO, B.PATRONO FROM ( SELECT IDASSOCIADO FROM associados2 WHERE IDASSOCIADO = 1477 ) AS A INNER JOIN associados2 B ON B.PATRONO = A.IDASSOCIADO #UNION para consultar apenas os associados2 nível 3 UNION SELECT C.IDASSOCIADO, C.NOME, C.NIVELASSOCIADO, C.PATRONO FROM ( SELECT IDASSOCIADO FROM associados2 WHERE IDASSOCIADO = 1477 ) AS A INNER JOIN associados2 B ON B.PATRONO = A.IDASSOCIADO INNER JOIN associados2 C ON C.PATRONO = B.IDASSOCIADO #UNION para consultar apenas os associados2 nível 4 UNION SELECT D.IDASSOCIADO, D.NOME, D.NIVELASSOCIADO, D.PATRONO FROM ( SELECT IDASSOCIADO FROM associados2 WHERE IDASSOCIADO = 1477 ) AS A INNER JOIN associados2 B ON B.PATRONO = A.IDASSOCIADO INNER JOIN associados2 C ON C.PATRONO = B.IDASSOCIADO INNER JOIN associados2 D ON D.PATRONO = C.IDASSOCIADO ORDER BY NIVELASSOCIADO Dependendo, se quiser 'depurar' o resultado de cada union, só ir executando um a um e ver se está vindo os registros certos. se não estiver, diz ae o problema. flw Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 8, 2008 OLá amigo, fera desculpa a demora para responder, é que estava na estrda durante o dia todo hoje, é assim, seu SQL foi de muita ajuda para mim, me deu uma clareza de como eu poderia fazer, porem não consegui chegar ainda exatamente no que eu gostaria, mechendo daqui e dali e pegando a ideia que você me deu consegui chegar a algo próximo que foi isto aqui. # primeiro nivel select a1.idassociado, a1.nome, a1.nivelassociado from associados2 a1 where a1.ascendente = 473 order by a1.posicao # segundo select, nivel 2 select a1.idassociado, a1.nome, a1.nivelassociado from associados2 a1 join associados2 a2 on a2.idassociado = a1.ascendente where a2.ascendente = 473 order by a2.posicao, a1.posicao # terceiro select select a1.idassociado, a1.nome, a1.nivelassociado from associados2 a1 join associados2 a2 on a2.idassociado = a1.ascendente join associados2 a3 on a3.idassociado = a2.ascendente where a3.ascendente = 473 order by a3.posicao, a2.posicao, a1.posicao # quarto nivel... select a1.idassociado, a1.nome, a1.nivelassociado from associados2 a1 join associados2 a2 on a2.idassociado = a1.ascendente join associados2 a3 on a3.idassociado = a2.ascendente join associados2 a4 on a4.idassociado = a3.ascendente where a4.ascendente = 473 order by a4.posicao, a3.posicao, a2.posicao, a1.posicao Porem agora to aqui quebrnaod a cabeça para ver como posso fazer a distinção de nivel dentro dos mesmos select, vou explicar. Imagine o nosso personagem JOÃO JOÃO coloca 5 pessoas diretas (ele é o ascendente das 5) COMEÇO ENTÃO AMONTAR A REDE JOÃO VAI APARECER COMO CABEÇA DA REDE COM BONECO REPRESENTANDO ELE OU ALGO ASSIM. EM SEGUIDA VOU COLOCAR ABAIXO DO JOÃO OS 5 AOS QUAIS ELE É ASCENDENTE, ATÁ QUI SUPER SIMPLES, AQUI EU FORMO O PRIMEIRO NIVEL DO JOÃO AGORA COMEA COMPLICAR POR QUE PRECISO COLOCAR OS PRÓXIMO 25 QUE VÃO FORMAR O SEGUNDO NIVEL E AI QUERO COLOCAR ELES DA FORMA CORRETA OU SEJA, CADA UM DOS 5 COM SEUS 5 SE ASSIM JÁ TIVEREM E CASO ALGUM DELES NÃO TENHA AINDA SEUS 5 VAI APARECER UM BOCO DE UMA COR DIFERENTE REPRESENTANDO QUE AQUELE LUGAR ESTA VAGO, QUE PODE SER AINDA CADASTRADO ALGUÉM, E ASSI POR DIANTE EU VOU MONTADO ATÉ O 4 NIVEL. AQUIE É QUE EU ESTOU ME EMBANANANDO, NEM SEI SE É POSSIVEL FAZER EM UM SELECT SÓ ISTO, SE TEM COMO JUNTAR OU SEPARAR DE 5 EM 5 BLOCOS A CONSULTA DENTRO DO SELECT DE FORMA QUE EU MOSTRE ISTO A REDE, DEIXA EU VER SE CONSIGO MOSTRAR ISTO COM MDESENHO PARA FACILITAR COLOQUEI UMA IMGEM PARA DEMONSTRAR O QUE ESTOU TENTANDO FAZER http://www.conquistta.com.br/ex_rede.jpg NA VERDADE COMO DISSE NEM SEI SE TEM COMO FAZER, AQUI NESTA IMGEM É UM EXMPLO, É CLARO QUE EXEMPLO EU CONTEI DA SEGUINTE FORMA JOÃO COLOCOU 1 PESSOA ESTA POR SUA VEZ COLOCOU 4 E ESTAS 4, 3 COLOCARAM 5 E 1 COLOCOU 4 QUANDO DIGO COLOCOU É PORQUE O SISTEMA VAI LER COMO ELA SENDO ASCENDENTE DA PESSOA MAS NÃO NECESSÁRIAMENTE QUE FOI ELA QUEM COLOCOU, PODE TER SIDO COLOCADA POR QUALQUER OUTRA PESSOA DE CIMA OU ABAIXO DELA Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Agosto 8, 2008 é... com um SQL só ainda não deu p/ fazer deste jeito nesta estrutura apresentada (árvore na imagem). apesar de daqueles unions ter como resultado todos os associados desde o joão até o final (pelo menos nos testes que fiz), não daria p/ saber exatamente de qual associado é a partir do 2º nível. bom, provavelmente teria de usar um pouco de programação, mas acredito que cairia justamente no problema que você queria evitar que era fazer SELECT por SELECT. mesmo usando uma estrutura apenas de SQL que seria este: select a1.idassociado, a1.nome, a1.nivelassociado from associados2 a1 where a1.ascendente = id_do_ascendente partindo deste que seria o 'cabeça': select a1.idassociado, a1.nome, a1.nivelassociado from associados2 a1 where a1.idassociado = id_do_associado_cabeça poderia até montar este SQL padrão como uma VIEW ou até mesmo Procedure. já que você quer montar a lista na estrutura da imagem, o 1º SQL seria o mais indicado já que lista os registros pertecentes aquele ascendente (independente do nível). pelo que vejo daria para montar esta lista na estrutura usando apenas 1 SQL de certa forma, só que executando várias vezes (dentro de alguns loops)... mas num SQL tudo de uma vez só p/ montar nesta estrutura ainda não dá com estes que fizemos... http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif vou tentar pensar mais um pouco, mas a princípio esgotei as idéias ehehe http://forum.imasters.com.br/public/style_emoticons/default/pinch.gif flw Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Agosto 9, 2008 Bacalhais a parte......... (Assumindo que o tal do JOAO seja o user '1') Select 'NIVEL ZERO - PAI DE TODOS' UNION ALL Select nome from tabela where idassociado in ('1') UNION ALL Select 'NIVEL UM' UNION ALL Select nome from tabela where patrono in ('1') UNION ALL Select 'NIVEL DOIS' UNION ALL Select nome from tabela where patrono IN (Select idassociado from tabela where patrono in ('1') ) UNION ALL Select 'NIVEL TRES' UNION ALL Select nome from tabela where patrono IN (Select idassociado from tabela where patrono IN (Select idassociado from tabela where patrono in ('1') ) ) UNION ALL Select 'NIVEL QUATRO' UNION ALL Select nome from tabela where patrono IN (Select idassociado from tabela where patrono IN (Select idassociado from tabela where patrono IN (Select idassociado from tabela where patrono in ('1') ) ) ) Aih você pode os campos q você quer junto com o campo nome e pode ir baixando na piramide usando a tecnica apresentada acima sem mto problema Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 9, 2008 Olá giesta, testei seu SQL, no MysqlFronbt e funcionou 100%, porem quando coloco ele no código ASP ele da erro como se não existice na base de dados o registro, mas o mesmo SQL no MysqlFront funciona ADODB.Field error '800a0bcd' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /area_restrita/selecao_universal.asp, line 27 Veja como fiz somente para teste para ver como responderia na web o SQL http://www.conquistta.com.br/testeRede.asp <% Set RS = Server.CreateObject("adodb.recordset") SQL = "Select nome, ascendente, patrono, uf, cidade, posicao, nivelassociado from associados2 where idassociado in ('473') UNION ALL Select nome, ascendente, patrono, uf, cidade, posicao, nivelassociado from associados2 where ascendente in ('473') UNION ALL Select nome, ascendente, patrono, uf, cidade, posicao, nivelassociado from associados2 where ascendente IN (Select idassociado from associados2 where ascendente in ('473') ) UNION ALL Select nome, ascendente, patrono, uf, cidade, posicao, nivelassociado from associados2 where ascendente IN (Select idassociado from associados2 where ascendente IN (Select idassociado from associados2 where ascendente in ('473') ) ) UNION ALL Select nome, ascendente, patrono, uf, cidade, posicao, nivelassociado from associados2 where ascendente IN (Select idassociado from associados2 where ascendente IN (Select idassociado from associados2 where ascendente IN (Select idassociado from associados2 where ascendente in ('473') ) ) )" RS.Open SQL,Conn,3,3 Do until rs.EOF %> <%=Rs("nome")%> <% rs.movenext loop rs.Close Set rs = Nothing %> detalhe , no PHPMyAdmin tbm roda, só na apgina com script em ASPVBScrip que não esta rodando Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 9, 2008 Desulpa pessoal, comi bola, o erro não era no select e sim em outra pagina não percebi, hehehe Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 9, 2008 Obrigado Giesta, agora estou na faze de tentar fazer aquilo que falei, montar separadamente a árvore, de forma ficar mais simples do usuário ver quem é quem e de quem é quem na rede, porque na web para definir os niveis preciso de uma referencia tipo RS, RS1, RS2, ou seja sects separados, estou tentado ver se é possivel fazer o código pegar de um select só varias informações separadamente Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Agosto 9, 2008 Estamos ai pra ajudar no que for possivel :) Compartilhar este post Link para o post Compartilhar em outros sites
kania 0 Denunciar post Postado Agosto 9, 2008 Achei algo no site da Imaster, seria possivel fazer algo para Mysql desta forma, parece ser bem o que preciso, ou estou totalmente equivocado? http://imasters.com.br/artigo/4290/sql...registros_-_02/ Compartilhar este post Link para o post Compartilhar em outros sites