Ir para conteúdo

POWERED BY:

Arquivado

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

id.cs

SQL Avançado

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

To com um problemão, na verdade nem tanto, mas pra mim é, eu fiz um formulário para uma busca mas não estou tendo muito sucesso. Nesse formulário a dois campos um para o texto (variavel=txt) e outro é um combox que você seleciona qual categoria você quer buscar, tais categorias vindas de uma tabela, por um select, quando a pessoa digita um valor qualquer para buscar e seleciona uma categoria ao clicar em buscar é enviado esses dados por parametro a uma outra página, está outra página (busca.asp) faz um request nesses valores e executa o sql, após a execução exibi os seguintes dados, "nome, inclusao, cliques, linguagem, categoria".

 

Até agora expliquei como funciona, a questão vem no sql da consulta, porquê? O fato é que não estou conseguindo relacionar os valores, quando digitado qualquer valor no campo da busca esse valor é comparado aos nomes da tabela codigos, ou seja, ele pega todos os registros que tenham "construtor" no seu nome e exibi, mas quando selecionado a linguagem tem de ser exibido apenas os relacionados a linguagem escolhida, sendo que a tabela codigos está relacionada com a tabela categorias e está com a tabela linguagens.

 

Enfim, o fato é que a consulta terá de ver o nome buscado no campo nome da tabela codigos e pegar o id da categoria salvo nesses registros, ir até a tabela categorias verificar o id da linguagem salvo nessas categorias e exibir apenas os que possuir o id selecionado na busca.

 

Eu não consegui fazer o SQL, tentei alguns métodos, mas nada, alguem pode me dar uma luz?

 

O SQL que criei:

 

ComandoSQL = "SELECT * FROM codigos, categorias, linguagens WHERE codigos.nome LIKE '%"& busca &"%' AND codigos.id_cat=categorias.id AND categorias.id_linguagens=linguagens.nome"

 

 

*longo o texto, se não deu pra entender perguntem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua SQL deve ficar +/- assim:

SELECT * FROM codigos, categorias, linguagens WHERE codigos.nome LIKE '%"& busca &"%' AND codigos.id_cat=categorias.id AND categorias.id_linguagens='"& Linguagem &"';

Isso levando em consideração que está passando o "nome" da linguagem a ser pesquisada. Teste e se retornar algum erro ou não funcionar e só postar explicando o que aconteceu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas dessa forma também relaciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

id,acho que faltou dizer que campos você quer que apareçaSELECT codigos.*, categorias.*, linguagens.* FROM codigos, categorias, linguagens WHERE codigos.nome LIKE '%"& busca &"%' AND codigos.id_cat=categorias.id AND categorias.id_linguagens=linguagens.nome"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tb usaria o JOIN mas ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

:D Valeu mesmo!

 

Pois é, quero que exiba o campo nome da tabela linguagens, da categoria não quero que exiba nada, é isso?

 

Sua SQL deve ficar +/- assim:

SELECT * FROM codigos, categorias, linguagens WHERE codigos.nome LIKE '%"& busca &"%' AND codigos.id_cat=categorias.id AND categorias.id_linguagens='"& Linguagem &"';

Isso levando em consideração que está passando o "nome" da linguagem a ser pesquisada. Teste e se retornar algum erro ou não funcionar e só postar explicando o que aconteceu.

Deu o seguinte erro:

 

Microsoft JET Database Engine (0x80040E10)

Nenhum valor foi fornecido para um ou mais parâmetros necessários.

/icodigo/busca.asp, line 88

 

 

Linha 87: ComandoSQL = "SELECT * FROM codigos, categorias, linguagens WHERE codigos.nome LIKE '%"& busca &"%' AND codigos.id_cat=categorias.id AND categorias.id_linguagens='"& linguagens &"'e"

 

Linha 88: Set rsCodigo = conexao.EXECUTE(ComandoSQL)

 

 

Não entendi? :blink:

 

Um detalhe, a variavel que contem o nome da linguagem é "linguagens", tenho que mudar esse valor que é pego para pegar o id da linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

que é isso no fim de sua string?? e

Compartilhar este post


Link para o post
Compartilhar em outros sites

que é isso no fim de sua string?? e

Já removi, mas continua dando o mesmo erro, uma questão, se o usuário estiver na default e quiser buscar algo tem um form lá que envia por parametro os mesmo dados, ou seja, a página faz um request e ve os dados enviados pelo parametro e depois pega os mesmo dados que foram enviados novamente pelo parametro.

 

:huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tb usaria o JOIN mas ...

por mim faria sua sql mudando a forma de relacionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tb usaria o JOIN mas ...

por mim faria sua sql mudando a forma de relacionar
:mellow: Mario, mal sei relacionar assim, JOIN... nem sei como, me da uma luz então?

Compartilhar este post


Link para o post
Compartilhar em outros sites

:blink: Será que alguem pode me explicar melhor essa outra forma de relacionar, "Join".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

id_linguagem é o código da linguagem correto? Você manda esse valor no form ou manda o nome da linguagem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

:) Valeu Mario!

id_linguagem é o código da linguagem correto? Você manda esse valor no form ou manda o nome da linguagem?

:mellow: Não te intendi Salgado? O que eu faço é o seguinte, esse valor é passado do combox(do form) para uma variavel que é enviado por parametro e depois a outra página busca o valor da variavel no parametro, é isso?

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.