Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Inner Join


Loko da Web

Pergunta

Boa tarde!

Estou usando inner join pra duas tabelas(categorias e fotos)... Bem, na primeira pagina esta as categorias, na segunda pagina esta os filmes.

- O que eu quero, é que na segunda pagina tenha o nome da categoria que esta na primeira pagina. Pra dar referencia da pagina em que esta.

- Eu consegui mostrar o nome da categoria na segunda pagina, mas as fotos não consigo visualizar, fica dando esse erro:

ADODB.Recordset error '800a0cc1' 

Item cannot be found in the collection corresponding to the requested name or ordinal.
Meu select:
SELECT * FROM fotos INNER JOIN categorias ON fotos.idcat = categorias.id WHERE idcat=" & idcat & " order by fotos.id, fotos.idcat desc

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0
Posta a primeira página aí ...

Na tabela de filmes você tem o id e o nome da categoria, um dos dois ou nenhum ?

Não, na tabela dos filmes tenho o idcat, que é o id da categorias (aonde elas estao relacionadas)

categorias

id - nome_cat
fotos
id - idcat - idstatus - foto - thumb - nome - nome_original - detalhe - diretor - elenco - duracao - pais - data_lancamento - ano - trailer

Uma coisa eu não entendi, fiz o inner join, na segunda pagina apareceu o nome da categoria,... mas quando foi imprimir o resultado da tabela fotos, deu aquele erro de cima. Muito esquisito.

Link para o comentário
Compartilhar em outros sites

  • 0
Só você tirar o order by

SELECT * FROM fotos INNER JOIN categorias ON fotos.idcat = categorias.id WHERE idcat=" & idcat

Bah !!!! Não deu certo jow... continua dando o mesmo erro, o estranho é o nome da categoria apareceu, mas quando é pra mostrar os filmes que é de outra tabela, não funcionou... Muito esquisito.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom estranho não é, tá acontecenfo o erro porque você está comparando apenas com a categoria por isso só mostra a categoria pra você matar esse erro faz assim:

SELECT F.foto AS nome_foto, C.nome AS nome_categoria FROM fotos AS F INNER JOIN categorias AS C ON F.idcat = C.id WHERE F.idcat=" & idcat  &"

ou 

SELECT F.foto AS nome_foto, C.nome AS nome_categoria FROM fotos AS F INNER JOIN categorias AS C ON F.idcat = C.id WHERE F.idcat=" & idcat

este é o nome da foto nome_foto

este é o nome da categoria nome_categoria

isso deve funcionar desde q o campo idcat seja numérico

Link para o comentário
Compartilhar em outros sites

  • 0
Bom estranho não é, tá acontecenfo o erro porque você está comparando apenas com a categoria por isso só mostra a categoria pra você matar esse erro faz assim:

SELECT F.foto AS nome_foto, C.nome AS nome_categoria FROM fotos AS F INNER JOIN categorias AS C ON F.idcat = C.id WHERE F.idcat=" & idcat  &"

ou 

SELECT F.foto AS nome_foto, C.nome AS nome_categoria FROM fotos AS F INNER JOIN categorias AS C ON F.idcat = C.id WHERE F.idcat=" & idcat
este é o nome da foto nome_foto este é o nome da categoria nome_categoria isso deve funcionar desde q o campo idcat seja numérico
Fiquei um pouco confuso, tentei adpatar, mas só da erro:
Microsoft JET Database Engine error '80040e10' 

No value given for one or more required parameters.

Se você puder me explicar o que siginifica aquele F e C, e na hora de dar o select nas colunas F.foto AS nome_foto, C.nome AS nome_categoria , porque é feita dessa maneira ????

Se puder explicar, fica mais facil adpatar... Cara, você esta me ajudando um monte, agradeço de verdade !!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte eu "apelidei" as minhas tabelas

chamei a minha tabela filmes de F, consequentemente para referenciar o seus campos eu uso F.

A mesma coisa eu fiz para a tabela categoria

e no nome da foto da tabela foto eu chamei de nome_foto

O mesmo para o campo nome da table categorias. Resumindo é a mesma é quase a mesma coisa q você tinha feito, com diferença tirei o * e usei o nome dos campos, pois o * consome maior tempo tempo de resposta do BD, se precisar de mais campos basta inserir.

Qd você for chamar o resultado do recordset só usar

rs("nome_foto")

rs("nome_categoria")

Tenta resolver o seu problema caso não consiga posta exatamente como está o seu select que eu tento rodar aki no meu BD ....

Link para o comentário
Compartilhar em outros sites

  • 0

jow, se você puder dar essa mao...

É o seguinte:

- Tenho duas tabelas (categorias e fotos)

- Preciso exibir o nome da categoria (tabela categorias) junto com outros registros (tabela fotos)

tabela: categorias

id - nome_cat

tabela: fotos

id - idcat - thumb - nome - nome_original - detalhe - ano

Esses são os campos que preciso exibir na minha pagina, meu select esta dessa maneira:

SELECT * FROM fotos  WHERE idcat=" & idcat & " order by data_lancamento desc

Os rs que deve ser exibido:

tabela: categorias

<%=rs("nome_cat")%>

tabela: fotos

<%=rs("id")%>

<%=rs("idcat")%>

<%=rs("thumb")%>

<%=rs("nome")%>

<%=rs("nome_original")%>

<%=rs("ano")%>

<%=rs("detalhe")%>

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia vamos lá vou imaginar um posivel cenário q você esteja montando.

você tem uma página com as categorias o usuário clika, e vê a foto correspondente a essa categoria.

pagina1.asp

<%
SQL="SELECT nome_cat AS nome, id_cat AS codigo FROM categorias"
Set rs = cnn.execute(SQL)

while rs.eof

<a href="pagina2.asp?mostrar=<%=rs("codigo")%>"><%=rs("nome")%></a>

rs.movenext
wend
%>
pagina2.asp
<%

cat = request.querystring("mostrar")

SQL = "SELECT F.foto AS nome_foto, C.nome AS nome_categoria FROM fotos AS F INNER JOIN categorias AS C ON F.idcat = C.id WHERE F.idcat=' " & cat &  " ' AND C.id= ' " & cat & " '
Set rs = cnn.execute(SQL)

response.write rs("nome_categoria") & "<br>" & rs("nome_foto") %>

Cara eu não testei esse código fiz uma lógica aki, não sei se funcina mais a lógica é essa ... Se você não conseguir rodar ele dá uma debugada nesse código ai, certifique - se q a váriavel querystring está vindo o código da categoria, o q o sql tá trazendo ...

Link para o comentário
Compartilhar em outros sites

  • 0
Bom dia vamos lá vou imaginar um posivel cenário q você esteja montando.

você tem uma página com as categorias o usuário clika, e vê a foto correspondente a essa categoria.

pagina1.asp

<%
SQL="SELECT nome_cat AS nome, id_cat AS codigo FROM categorias"
Set rs = cnn.execute(SQL)

while rs.eof

<a href="pagina2.asp?mostrar=<%=rs("codigo")%>"><%=rs("nome")%></a>

rs.movenext
wend
%>
pagina2.asp
<%

cat = request.querystring("mostrar")

SQL = "SELECT F.foto AS nome_foto, C.nome AS nome_categoria FROM fotos AS F INNER JOIN categorias AS C ON F.idcat = C.id WHERE F.idcat=' " & cat &  " ' AND C.id= ' " & cat & " '
Set rs = cnn.execute(SQL)

response.write rs("nome_categoria") & "<br>" & rs("nome_foto") %>

Cara eu não testei esse código fiz uma lógica aki, não sei se funcina mais a lógica é essa ... Se você não conseguir rodar ele dá uma debugada nesse código ai, certifique - se q a váriavel querystring está vindo o código da categoria, o q o sql tá trazendo ...

Putz,... agora sim deu certo !!!! Jow valeu pela ajuda cara, 5 stars pra você !!!!! :D

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...