Ir para conteúdo

POWERED BY:

Arquivado

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

thiagobellusse

[Resolvido] Consulta em duas tabelas

Recommended Posts

Boa tarde pessoal, estou com duvida no seguinte:

Possuo duas tabelas, produtos e categorias, quando eu clico em uma categoria quero que apareça apenas os produtos daquela categoria e não de todas as outras.

O meu código é o seguinte:

 

idcat = request.querystring("id_cat")
Set rsProdutos = Server.CreateObject("ADODB.Recordset")
strProdutos = "SELECT * FROM produto INNER JOIN categoria ON produto.categoria = categoria.id_cat WHERE produto.categoria =categoria.id_cat;"

Porém ele esta me mostrando apenas um produto que não é da categoria, ou seja, clico na categoria 1, esta me mostrando o produto 1, clico na categoria n ele ainda me mostra o produto 1.

Como consigo resolver este problema????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os relacionamentos estão corretos,

 

Tente SELECT * FROM produtos INNER JOIN categoria ON produto.cod_cat = categoria.cod_cat WHERE categoria.cod_cat = “ &variável_request&”

Compartilhar este post


Link para o post
Compartilhar em outros sites

Set rsProdutos = Server.CreateObject("ADODB.Recordset")

strProdutos = "SELECT * FROM produtos INNER JOIN categoria ON produto.cod_cat = categoria.cod_cat WHERE categoria.cod_cat = "&id_cat&";"

 

 

Tipo de erro:

Microsoft JET Database Engine (0x80040E14)

Erro de sintaxe na operação JOIN.

Compartilhar este post


Link para o post
Compartilhar em outros sites

este erro é de Invalid column name 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada. Verifique a ortografia., você deve usar o exemplo que coloquei porem com seus campos, como por exemplo este:

 

SQL="SELECT categoria.categoria,produto.produto,produto.cod_produto,produto.preco,produto.im
agem,produto.descricao FROM categoria INNER JOIN produto ON categoria.codcategoria = produto.codcategoria ORDER BY produto.produtoWHERE codcategoria = '"&varcategoria&"' AND produto.produto LIKE '%"&varproduto&"%'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xanburzum, agora gerou o seguinte erro:

 

Tipo de erro:

Microsoft JET Database Engine (0x80040E14)

Erro de sintaxe (operador faltando) na expressão de consulta 'produto.produto WHERE id_cat = '15''.

/mc/categorias.asp, line 44

Não sei onde estou errando ou o que esta errado. Estou aqui quebrando a cabeça e nada de funcionar.

Segue abaixo o código, caso ajude a solucionar este problema.

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim idcat
Dim id_cat
Dim caminho
Dim conexao 
id_cat2 = request.querystring("id_cat")
id_cat = request.querystring("id_cat")
caminho = Server.MapPath("mc.mdb")
Set conexao = Server.CreateObject("ADODB.Connection")
conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&caminho&";"

Set rsBuscaProdutos = Server.CreateObject("ADODB.Recordset")
strBuscaProdutos = "SELECT * FROM Categoria where id_cat="&id_cat&";"
rsBuscaProdutos.open strBuscaProdutos, conexao, 3, 3
rsBuscaProdutos.PageSize = 1
if rsBuscaProdutos.eof then
   Mensagem = "Nenhum Registro Encontrado"
   Response.End 
else
   'Definimos em qual pagina o visitante está
   if Request.QueryString("pagina")="" then 
	  intpagina = 1
   else
	  if cint(Request.QueryString("pagina"))<1 then
intpagina = 1
	  else
if cint(Request.QueryString("pagina"))>rsBuscaProdutos.PageCount then  
	intpagina = rsBuscaProdutos.PageCount
		 else
	intpagina = Request.QueryString("pagina")
end if
	  end if	
   end if   
		end if
%>
<%

Set rsProdutos = Server.CreateObject("ADODB.Recordset")
strProdutos = "SELECT categoria.categoria, categoria.id_cat, produto.produto, produto.id_prod, produto.valor, produto.foto, produto.descricao FROM categoria INNER JOIN produto ON categoria.id_cat = produto.id_cat ORDER BY produto.produto WHERE id_cat = '"&id_cat2&"'"
rsProdutos.open strProdutos, conexao, 3, 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a ortografia.tem algum nome errado na instrucao SQL, e você esta passando o id_cat como dado de tipo texto, verifique se no bd ele esta texto ou numerico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, verifiquei a ortografia, ela esta correta, as minhas tabelas estão da seguinte forma:

 

Categoria (Tabela)

id_cat - Numeração Automática

Categoria - Texto

 

Produto (Tabela)

id_prod - Numeração Automática

id_cat - Número (Campo Relacionado)

Produto - Texto

 

A página(menu) que envia os dados pra a minha página de detalhes esta assim:

 

<li><a href="categorias.asp?id_cat=<%=rsBuscaProdutos("id_cat")%>"><%=rsBuscaProdutos("categoria")%></a></li>

 

A página que recebe os dados esta da seguinte forma:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim idcat
Dim id_cat
Dim caminho
Dim conexao 
id_cat = request.querystring("id_cat")
caminho = Server.MapPath("mc.mdb")
Set conexao = Server.CreateObject("ADODB.Connection")
conexao.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&caminho&";"
'Selecionamos todos os Produtos da Tabela
Set rsBuscaProdutos = Server.CreateObject("ADODB.Recordset")
strBuscaProdutos = "SELECT * FROM Categoria where id_cat="&id_cat&";"
rsBuscaProdutos.open strBuscaProdutos, conexao, 3, 3
'Definimos o Numero de Paginas com a propriedade "PageSize" do objeto Recordset
rsBuscaProdutos.PageSize = 1
'Criamos as Validações
if rsBuscaProdutos.eof then
   Mensagem = "Nenhum Registro Encontrado"
   Response.End 
else
   'Definimos em qual pagina o visitante está
   if Request.QueryString("pagina")="" then 
	  intpagina = 1
   else
	  if cint(Request.QueryString("pagina"))<1 then
intpagina = 1
	  else
if cint(Request.QueryString("pagina"))>rsBuscaProdutos.PageCount then  
	intpagina = rsBuscaProdutos.PageCount
		 else
	intpagina = Request.QueryString("pagina")
end if
	  end if	
   end if   
		end if
%>
<%
Set rsProdutos = Server.CreateObject("ADODB.Recordset")
strProdutos = "SELECT categoria.categoria, categoria.id_cat, produto.produto, produto.id_prod, produto.valor, produto.foto, produto.descricao FROM categoria INNER JOIN produto ON categoria.id_cat = produto.id_cat WHERE produto.id_cat ="&id_cat
rsProdutos.open strProdutos, conexao, 3, 3

 

Mas mesmo assim ela não mostra os resultados.

Onde esta meu erro?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, felizmente consegui achar meu erro.

O erro estava sendo que eu não estava declarando o campo de comparação, ou seja, produto.id_cat - Logo ele não estava comparando com o campo categoria.id_cat.

 

Mas agradeço e muito sua ajuda xanburzum.

Valeu mesmo.

Abraços...

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.