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

Erro De Sintaxe No Inner Join


Sbigrilo

Pergunta

Oi pessoal, sou iniciante aqui e no ASP... tentei encontrar exemplos mas não dei conta!

Fiz um select onde quero unir varias tabelas e conseguir dados das msmas usando INNER JOIN.

o usuario loga, escolhe o aluno e bimestre numa combo e a pagina deve listar:

aluno.srm, Disciplina.sApelido, Avaliacao.sId, Nota.rNota (que seriam registro do aluno, nome da disc, descrição da avaliaçao e nota)

Mas está dando esse erro ai...

Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'aluno.lnum = Nota.lAluno INNER JOIN Avaliacao ON Avaliacao.lNum = Nota.lAvaliacao'.

as tabelass são:

TABELAS (CAMPOS)

aluno (lnum, snome, srm)

Nota (lAluno, rNota, lAvaliacao)

Avaliacao (lNum, lDisciplina, iBimestre, sId)

Disciplina (lnum, sApelido)

TRECHO DO MEU CODIGO:

Usu = Session("Usuario") - USUARIO LOGADO

Bim = Cint(Request.QueryString("Bimestre")) (BIMESTRE que DESEJA - num int)

if CLng(Request.QueryString("Solicitante")) <> 0 then (lnum do aluno escolhido numa combo)

strSQL = "SELECT aluno.lnum, aluno.snome, aluno.srm, Nota.lAluno, Nota.rNota, Nota.lAvaliacao, Avaliacao.lNum, Avaliacao.sId, Avaliacao.iBimestre "

strSQL = strSQL & "FROM aluno INNER JOIN Nota ON aluno.lnum = Nota.lAluno "

strSQL = strSQL & "INNER JOIN Avaliacao ON Avaliacao.lNum = Nota.lAvaliacao "

strSQL = strSQL & "WHERE lAluno = " & Usu

strSQL = strSQL & "AND iBimestre = " & Bim

strSQL = strSQL & "ORDER BY aluno.snome"

Não terminei a disciplina ainda... desisti antes

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

on error resume next

rsSolicitacao.Open strSQL, Notas, adOpenStatic, adLockOptimistic

if Err.Number <> 0 then

session.Contents("ErrNumber") = Err.Number

session.Contents("ErrDescr") = Err.Description

session.Contents("UrlRetorno") = "java script:history.back();"

Response.Redirect "Erro.asp"

end if

se possivel, me ajudem... desculpem a lerdeza...

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

As variaveis Usu e Bim são texto ou numero? montei aqui como texto, se não for é só tirar as aspas simples ('):

strSQL = "SELECT al.lnum, al.snome, al.srm, n.lAluno, n.rNota, n.lAvaliacao, av.lNum, av.sId, av.iBimestre "
strSQL = strSQL & "FROM aluno al "
strSQL = strSQL & "INNER JOIN Nota n ON al.lnum = n.lAluno "
strSQL = strSQL & "INNER JOIN Avaliacao av ON av.lNum = n.lAvaliacao "
strSQL = strSQL & "WHERE n.lAluno = '" & Usu &"' "
strSQL = strSQL & "AND av.iBimestre = '" & Bim  &"' "
strSQL = strSQL & "ORDER BY al.snome"

Link para o comentário
Compartilhar em outros sites

  • 0

estranho, bom só pra tira a duvida, tenta assim:

strSQL = "SELECT al.lnum, al.snome, al.srm, n.lAluno, n.rNota, n.lAvaliacao, av.lNum, av.sId, av.iBimestre FROM aluno al INNER JOIN Nota n ON al.lnum = n.lAluno INNER JOIN Avaliacao av ON av.lNum = n.lAvaliacao WHERE n.lAluno = "& Usu &" AND av.iBimestre = "& Bim &" ORDER BY al.snome"

Link para o comentário
Compartilhar em outros sites

  • 0

Imprime a consulta pra ver o que está saindo, talvez alguma var esteja vazia:

strSQL = "SELECT aluno.lnum, aluno.snome, aluno.srm, Nota.lAluno, Nota.rNota, Nota.lAvaliacao, Avaliacao.lNum, Avaliacao.sId, Avaliacao.iBimestre "

strSQL = strSQL & "FROM aluno INNER JOIN Nota ON aluno.lnum = Nota.lAluno "

strSQL = strSQL & "INNER JOIN Avaliacao ON Avaliacao.lNum = Nota.lAvaliacao "

strSQL = strSQL & "WHERE lAluno = " & Usu

strSQL = strSQL & "AND iBimestre = " & Bim

strSQL = strSQL & "ORDER BY aluno.snome"

response.write strSQL

response.end

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

Link para o comentário
Compartilhar em outros sites

  • 0

olha o que saiu...

SELECT aluno.lnum, aluno.snome, aluno.srm, Nota.lAluno, Nota.rNota, Nota.lAvaliacao, Avaliacao.lNum, Avaliacao.sId, Avaliacao.iBimestre FROM aluno INNER JOIN Nota ON aluno.lnum = Nota.lAluno INNER JOIN Avaliacao ON Avaliacao.lNum = Nota.lAvaliacao WHERE lAluno = 390AND iBimestre = 0ORDER BY aluno.snome

tentei fazer sem inner join com 2 tabelas e so imprimia o resultado da primeira (aluno)... acho que to fikando doidona

Link para o comentário
Compartilhar em outros sites

  • 0

está faltando espaço depois da variavel 1 e 2, deveria sair assim:

SELECT aluno.lnum, aluno.snome, aluno.srm, Nota.lAluno, Nota.rNota, Nota.lAvaliacao, Avaliacao.lNum, Avaliacao.sId, Avaliacao.iBimestre FROM aluno INNER JOIN Nota ON aluno.lnum = Nota.lAluno INNER JOIN Avaliacao ON Avaliacao.lNum = Nota.lAvaliacao WHERE lAluno = 390 AND iBimestre = 0 ORDER BY aluno.snome

Link para o comentário
Compartilhar em outros sites

  • 0

olha o que imprimiu quando tentei fazer sem inner join

SELECT A.lnum,A.snome, A.srm, B.lAluno,B.rNota, B.lAvaliacao,C.lNum, C.lDisciplina, C.iBimestre FROM aluno AS A, Nota AS B, Avaliacao AS C WHERE B.lAluno = 390 AND B.lAvaliacao = C.lNum ORDER BY A.snome

consegui listar todos das tabelas, agora so falta fazer uma comparação pr ele imprimir somente as avaliações do aluno selecionado na combo..

Link para o comentário
Compartilhar em outros sites

  • 0

sim, as tabelas tão relacionadas e os campos ligam 1 a outra, só não consegui usar o inner join... mas com where da certo... olha como fiz:

strSQL = "SELECT A.lnum,A.snome, A.srm, B.lAluno,B.rNota, B.lAvaliacao,C.lNum, C.lDisciplina, C.iBimestre, C.sId, D.lnum, D.sApelido " & _

" FROM aluno AS A, Nota AS B, Avaliacao AS C, Disciplina AS D " & _

" WHERE B.lAluno = " & Alu & _

" AND B.lAvaliacao = C.lNum " & _

" AND C.lDisciplina = D.lnum "

if Request.QueryString("Bimestre") <> 5 then

strSQL = strSQL & " AND iBimestre = " & Request.QueryString("Bimestre")

end if

strSQL = strSQL & " ORDER BY A.snome, D.sApelido"

agora so não to conseguindo fazer ele obedecer o filtro...

na combo seleciono o nome do aluno e o bimestre e passo como solicitante e bimestre... mas ele não reconhece e imprimi todos os alunos e avaliações das tabelas...

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,5k
×
×
  • Criar Novo...