Ir para conteúdo

POWERED BY:

Arquivado

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

paulojorge3l

Sistema de Busca em mais de uma tabela

Recommended Posts

Olá pessoal estou fazendo um sistema de busca para um cadastro de empresa por ramo de atuação.

 

O problema é o seguinte tenho o seguinte sql

 

SQL = "SELECT nome FROM empresa WHERE nome LIKE '%" & Busca & "%' "

Ele procura somente o nome da empresa por ser uma simples consulta até ai vai bem

 

Gostária de fazer assim ele procura o nome na tabela empresa não achou ele procura na tabela ramo se tiver roda um INNERJOIN para verificar se existe relação o ramo encontrado e alguma empresa cadastrada se tiver imprime a empresa se não imprime uma mensagem de inforção.

 

Simples só que não to dando conta de fazer será que alguem pode me dar uma luz de como posso fazer isso no select pois ele teria que veficar nas duas tabelas depois verificar o id_ramo para relacionar as tabelas.

 

Estrutura do Banco MYSql

 

Tabela = Empresa

id_empresa

id_ramo

nome

 

Tabela = Ramo

id_ramo

nome

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como tentou fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

imagine duas tabelas 1-Produto,2-categoria, onde você quer procurar, por exemplo em um form num combo, onde você seleciona a categoria e pode inserir o nome de algum produto para pesquisa.

 

SELECT categoria.categoria, produto.nome, produto.cod_produto, produto.url_imagem, produto.descricao, produto.valor, FROM categoria INNER JOIN produto ON categoria.cod_categoria = produto.cod_categoria WHERE categoria.cod_categoria = '"&varcategoria&"' AND produto.nome LIKE '%"&varpesquisa&"%'" ORDER BY produto.nome"

 

cabe destacar a impôrtancia de uma modelagem de dados bem definida até os mínimos detalhes, como os campos de relacionamentos, um velho ditado diz, que um relacionamento bem definido é a alma do aplicativo, pois daí saem todas as consultas e operações com o banco, influenciando diretamente na otimização e performance do aplicativo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal obrigado ai pela ajuda.

então xanburzum fiz como você me passou ai mas não funcionou pois não retorna nada independente doque eu passe pelo form e tmbm não da erro segue o sql

 

SQLGuia =" SELECT ramo.id_ramo, ramo.nome as n_ramo,"
SQLGuia = SQLGuia & " empresa.id_empresa, empresa.id_ramo, empresa.nome "
SQLGuia = SQLGuia & " FROM ramo "
SQLGuia = SQLGuia & " INNER JOIN empresa ON empresa.id_ramo = ramo.id_ramo"
SQLGuia = SQLGuia & " WHERE empresa.nome = '" & Request.Form("bsuca") & "' "
SQLGuia = SQLGuia & " AND ramo.nome LIKE '" & Request.Form("busca") & "' "

não da erro nenhum ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal funciono a pesquisa eu tinha escrito errado o nome de um form

agora seguinte quando ele não achar nada queria que desse um response.write

em vez do erro

 

Tipo de erro:

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca assim:

if rs.eof then
' se nao achar nada você pode redirecionar ou dar um response.write 
								response.write("Não encontrou nada")
   		'response.redirect("pagina.asp?msgeof=1")
		set rs=nothing
   else	
   		'senão , aqui você exibe os dados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu posso verificar antes como os dados estão vindo se atrazvéz de post ou querystring ????

Fiz esse if mas sempre imprime erro e quando não passo nada via post ele ainda da o erro de valor não existente

 

If Request.form("busca") = True then
									response.Write " busca=trim(Request.Form(""busca"")) " 
									Else
									If Request.QueryString("busca") = True  then
									response.Write " busca=trim(Request.QueryString(""busca"")) " 
									Else
									End if
									response.Write " (erro)"
									End If

coloquei o codigo que você passou após o coon.execute e esse meu if ai antes do select está correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

em vez de tudo isso

 

If Request.form("busca") = True then
									response.Write " busca=trim(Request.Form(""busca"")) " 
									Else
									If Request.QueryString("busca") = True  then
									response.Write " busca=trim(Request.QueryString(""busca"")) " 
									Else
									End if
									response.Write " (erro)"
									End If

use

 

If Request("busca") = True then
	  response.Write trim(Request(""busca"")) 
				  busca = trim(Request(""busca"")) 
Else
	 response.Write "(erro)"
End If

o "request" apenas verifica os dois metodos de retorno!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Filipe coloquei o código que me passou e da erro Erro de tempo de execução do Microsoft VBScript (0x800A0009)

Subscrito fora do intervalo: '' na linha 103 do meu código que é a pesq=busca(x)

 

 

<%

If Request("busca") = True then
	  response.Write " busca=trim(Request.Form(""busca"")) "
Else
	 response.Write " (erro)"
End If

busca=split(busca,chr(32))		 'Cria um array e separa cada palavra da strig
pesq=busca(x)						 ' Entrega à variavel pesq, cada uma das palavras digitadas no formulário

Daqui pra em diante vai o select que faz a busca no banco de dados.

oque pode estar errado

 

Obrigado pela ajuda e atenção de todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

olha nunca vi em varios anos de programação isto aqui em baixo. Ou se imprime busca ou o request dele neste caso não imprimiria nada. Ou daria erro.

 

response.Write " busca=trim(Request.Form(""busca"")) "

segue codigo correto

 

If Request("busca") <> "" then
	  response.Write trim(Request(""busca"")) 
	  busca = trim(Request(""busca"")) 
Else
	 response.Write "(erro)"
End If

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.