Ir para conteúdo

POWERED BY:

Arquivado

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

Matheus Brito

[Resolvido] erro com inner join

Recommended Posts

Ola pessoal alguem poderia verificar o que ha de errado nessa consulta...

 

set RS_Produtos =conn.execute("select P.*, M.Marca_Nome FROM Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id " & "INNER JOIN Prod_Cat PC ON PC.Prod_Id = P.Prod_Id " & "INNER JOIN Categorias C ON C.Cat_Id = PC.Cat_Id INNER JOIN Fotos F ON F.Prod_Id = P.Prod_Id " & "WHERE C.Cat_Nome = 'Calças'")

erro que aparece

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'M.Marca_Id = P.Marca_Id INNER JOIN Prod_Cat PC ON PC.Prod_Id = P.Prod_Id INNER JOIN Categorias C ON C.Cat_Id = PC.Cat_Id INNER JOIN Fotos F ON F.Prod_Id = P.Prod_Id'.

 

 

 

thx desde ja.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso...

SELECT P.*, M.Marca_Nome 
FROM (((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id) INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id) INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id
WHERE C.Cat_Nome = 'Calças'

Se der errado, verifica os campos utilizados na consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso...

SELECT P.*, M.Marca_Nome 
FROM (((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id) INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id) INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id
WHERE C.Cat_Nome = 'Calças'

Se der errado, verifica os campos utilizados na consulta.

Deu esse erro:

 

Erro de compilação do Microsoft VBScript erro '800a0409'

 

Constante de seqüência não finalizada

 

/vitrine/produtos.asp, linha 55

 

set RS_Produtos =conn.execute("SELECT P.*, M.Marca_Nome

-------------------------------------------------------^

 

Acho que ta faltando alguma coisa na consulta.

abs e vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera isso ai, P.*, não me recordo quanto aos outros Banco de Dados, mas o Access não reconhece isso.

 

Informa os campos que você vai utilizar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Altera isso ai, P.*, não me recordo quanto aos outros Banco de Dados, mas o Access não reconhece isso.

 

Informa os campos que você vai utilizar.

hargon alterei mas continua o mesmo erro:

ficou assim oh:

set RS_Produtos =conn.execute("SELECT P.Prod_Id,P.Prod_Nome,P.Prod_Descricao,P.Prod_CodRef,P.Prod_Preco,P.Prod_Prom,P.
Prod_Preco_Prom,P.Marca_Id, M.Marca_Nome 
FROM(((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id)" & "INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id)"&  "INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id
WHERE C.Cat_Nome = 'Calças' ")

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq você separa os INNER JOIN dessa forma? )" & "INNER JOIN

 

Não faz isso, coloca direto... veja o que acontece quando ler a instrução: )INNER JOIN Aí fica errado. Tem que ter espaço.

 

Outra coisa, você está quebrando linha sem finalizá-la. Isso também não pode.

 

set RS_Produtos =conn.execute("SELECT P.Prod_Id, P.Prod_Nome, P.Prod_Descricao, P.Prod_CodRef, P.Prod_Preco, P.Prod_Prom, P.
Prod_Preco_Prom, P.Marca_Id, M.Marca_Nome "&_
FROM (((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id) INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id) INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id "&_
WHERE C.Cat_Nome = 'Calças' ")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq você separa os INNER JOIN dessa forma? )" & "INNER JOIN

 

Não faz isso, coloca direto... veja o que acontece quando ler a instrução: )INNER JOIN Aí fica errado. Tem que ter espaço.

 

Outra coisa, você está quebrando linha sem finalizá-la. Isso também não pode.

 

set RS_Produtos =conn.execute("SELECT P.Prod_Id, P.Prod_Nome, P.Prod_Descricao, P.Prod_CodRef, P.Prod_Preco, P.Prod_Prom, P.
Prod_Preco_Prom, P.Marca_Id, M.Marca_Nome "&_
FROM (((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id) INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id) INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id "&_
WHERE C.Cat_Nome = 'Calças' ")

Mesmo assim nao da certo de jeito nenhum, ja joguei uma dessas consultas no ibexpert e funcionou normal, porem aqui nao ta funcionando por nada.

abs

 

fiz do jeito que você colocou:

set RS_Produtos =conn.execute("SELECT P.Prod_Id, P.Prod_Nome, P.Prod_Descricao, P.Prod_CodRef, P.Prod_Preco, P.Prod_Prom, P.
Prod_Preco_Prom, P.Marca_Id, M.Marca_Nome "&_
"FROM (((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id) INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id) INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id "&_
"WHERE C.Cat_Nome = 'Calças' ")

Compartilhar este post


Link para o post
Compartilhar em outros sites

E qual a mensagem de erro atual?

Compartilhar este post


Link para o post
Compartilhar em outros sites

E qual a mensagem de erro atual?

erro atual:

Erro de compilação do Microsoft VBScript erro '800a0409'

 

Constante de seqüência não finalizada

 

/vitrine/produtos.asp, linha 55

 

set RS_Produtos =conn.execute("SELECT

-------------------------------------^

 

 

codigo no momento esta assim:

set RS_Produtos =conn.execute("SELECT 
P.Prod_Id, P.Prod_Nome, P.Prod_Descricao, P.Prod_CodRef, P.Prod_Preco, P.Prod_Prom, P.Prod_Preco_Prom, P.Marca_Id, M.Marca_Nome " &_
"FROM (((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id) INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id) INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id " &_
"WHERE C.Cat_Nome = 'Calças' ")

Compartilhar este post


Link para o post
Compartilhar em outros sites

set RS_Produtos =conn.execute("SELECT P.Prod_Id, P.Prod_Nome, P.Prod_Descricao, P.Prod_CodRef, P.Prod_Preco, P.Prod_Prom, P.Prod_Preco_Prom, P.Marca_Id, M.Marca_Nome FROM (((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id) INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id) INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id WHERE C.Cat_Nome = 'Calças' ")

Não quebre linha, deixa tudo em uma única linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

joga so a consulta SQL no modo SQL do access e executa pra ver o k ela faz,

verifique os " ( " " ) " se estao corretos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

set RS_Produtos =conn.execute("SELECT P.Prod_Id, P.Prod_Nome, P.Prod_Descricao, P.Prod_CodRef, P.Prod_Preco, P.Prod_Prom, P.Prod_Preco_Prom, P.Marca_Id, M.Marca_Nome FROM (((Produtos P INNER JOIN Marca M ON M.Marca_Id = P.Marca_Id) INNER JOIN Prod_Cat PC ON P.Prod_Id = PC.Prod_Id) INNER JOIN Categorias C ON PC.Cat_Id = C.Cat_Id) INNER JOIN Fotos F ON P.Prod_Id = F.Prod_Id WHERE C.Cat_Nome = 'Calças' ")

Não quebre linha, deixa tudo em uma única linha.

@xanburzum eu ja havia feito a consulta no ibexpert e tava funcionando problema mesmo era essa sintaxe do asp muito confusa.

 

Hargon como sempre você me salva você eh o cara funcionou, porem mesmo a consulta fazendo join em tres tabelas na hora de exibir os produtos relacionados ta dando pau ta exibindo um quadrado onde seria a foto e aparece escrito do lado: O item nao pode ser encontrado na colecao correspondente ao nome ou ordinal solicitado.

 

o codigo que to usando pra listar os produtos:

do until RS_Produtos.eof
%>
<a href="imagem.asp?Prod_Id=<%response.write RS_Produtos("Prod_Id")%>">
<IMG height="130" width="130"
align="left" src="./produtos/<%response.write RS_Produtos("Foto_Desc")%>" 'O problema ta aqui oh ele nao consegue buscar campo nenhum da tabela fotos
border="1" ALT="<%=RS_Produtos("Prod_Nome")%>"/><br/><br></a>


<%
RS_Produtos.movenext
loop
%>
vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Somente os campos informados no SELECT podem ser acessados via recorset. FOTO_DESC não está entre eles...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Somente os campos informados no SELECT podem ser acessados via recorset. FOTO_DESC não está entre eles...

 

So no asp não é? Porque ao se fazer um join eh possivel manipular qualquer tupla da tabela relacionada.

Então devo inserir o Foto_Desc no join?

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é padrão do SQL e não do Access, ASP, etc...

 

Para acessar um campo você tem que informar no SELECT, senão não seria necessário informar nada no SELECT...

 

Alguns usam * (esse pega tudo), mas não é viável, pois se as tabelas possuirem muitos campos e registros, vai retornar uma consulta lenta. O ideal é informar somente o que vai ser utilizado.

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.