Ir para conteúdo

POWERED BY:

Arquivado

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

kania

Select em varios niveis de uma vez só

Recommended Posts

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

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=latin1
os 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

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

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",4
todos 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

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

é... 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

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

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

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

×

Informação importante

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