none
request.QueryString("id") USANDO INNER JOIN RRS feed

  • Pergunta

  • Bom dia galera....

    estou com um probelma que é o seguinte:

    estou tentando fazer uma consulta em uma tabela que esta relacionada com outra tabela no DB atraves do id.

    Se alguem puder me ajudar eu agradeço desde já.

     

    strSQL = "SELECT TBL_USUARIOS.NOME, TBL_USUARIOS.EMAIL, TBL_USUARIOS.DDD, TBL_USUARIOS.TELEFONE, TBL_USUARIOS.DDD_CELULAR, TBL_USUARIOS.CELULAR, TBL_MAQUINAS_VENDA.ID_MAQUINAS_VENDER , TBL_MAQUINAS_VENDA.MARCA, TBL_MAQUINAS_VENDA.MODELO, TBL_MAQUINAS_VENDA.FORMATO, TBL_MAQUINAS_VENDA.ANO_FABRICACAO, TBL_MAQUINAS_VENDA.TIPO, TBL_MAQUINAS_VENDA.FUNCIONAMENTO, TBL_MAQUINAS_VENDA.APARENCIA, TBL_MAQUINAS_VENDA.LOC_CIDADE, TBL_MAQUINAS_VENDA.LOC_ESTADO, TBL_MAQUINAS_VENDA.EMPRESA, TBL_MAQUINAS_VENDA.E_MAIL,   TBL_MAQUINAS_VENDA.PRECO, TBL_MAQUINAS_VENDA.PAGAMENTO, TBL_MAQUINAS_VENDA.OBSERVACOES, TBL_MAQUINAS_VENDA.DATA FROM TBL_USUARIOS INNER JOIN  TBL_MAQUINAS_VENDA on TBL_USUARIOS.ID_USUARIO = TBL_MAQUINAS_VENDA.ID_USUARIO = "+request.QueryString("id")+"  "

     

    Na consulta gostaria de exibir o registro da máquina referente ao ''id'' de cada maquina

    obrigado pela atenção.

    terça-feira, 23 de setembro de 2008 11:01

Respostas

  • Caio, consegui cara...

    tava dando erro, por que eu estava digitando os nomes dos campos errados....

    ehehhehe

    ta funcionando beleza agora

    valeu pela a ajuda e pela atenção

    muito obrigado mesmo cara

    ate mais!

    terça-feira, 23 de setembro de 2008 16:12

Todas as Respostas

  • Olá André,

     

    Faltou você informar a cláusula WHERE:

     

    Code Snippet

     

    (...) TBL_USUARIOS.ID_USUARIO = TBL_MAQUINAS_VENDA.ID_USUARIO

    WHERE TBL_USUARIOS.ID_USUARIO = " + Request.QueryString("ID") + " ... ".

     

     

     

    Entretanto, seu código está vulnerável à SQL Injection... O ideal seria utilizar uma Stored Procedure.

    Sugiro ainda a leitura do post SQL Injection - você está protegido?.

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    terça-feira, 23 de setembro de 2008 12:24
  • Fala ai Caio, so na paz?!?!?

    Muito obrigado pela suas dicas cara. Estão sendo muito uteis para mim.

    Em relação a essa parte, somente o administrador do site terá acesso, mesmo nesse caso é necessario SQL Injection?

    Sou bastante leigo em ASP, SQL, DB como deve ter notado, logico ne.... eheheheehe  entrei nesse mundo a pouco tempo, com certeza pretendo me aprimorar cada vez mais. 

    Essa questao de relacionamento de tabelas esta me confundindo bastante, no caso que vc citou acima

     

    (...) TBL_USUARIOS.ID_USUARIO = TBL_MAQUINAS_VENDA.ID_USUARIO

    WHERE TBL_USUARIOS.ID_USUARIO = " + Request.QueryString("ID") + " ... ".

     

    estará sendo passado id do usuario para a consulta na tabela 'TBL_USUARIOS' ?

    a questao é a seguinte, tenho uma lista que exibe as máquinas cadastradas no DB pelos usuarios do site,

    os registro dessas maquinas vao para a  tabela 'TBL_MAQUINAS_VENDA' e essa tabela esta relacionada com a tabela 'TBL_USUARIOS' atravez do campo 'ID_USUARIO' para que o admin do site possa saber qual usuario cadastrou "tal maquina"

    Essa página que estou com problemas exibira todas as informações da maquina como(MARCA , MODELO, ANO, etc..)e também devera exibir algumas informações do usuario que a cadastrou como (NOME, TELEFONES , EMAIL, etc) essas informações de usuario estão na 'TBL_USUARIOS' .

    Com base na dica que me citou acima eu fiz assim:

     

    idok = request.QueryString("id")

    .

    .

    .

    strSQL = "SELECT FROM TBL_MAQUINAS_VENDA INNER JOIN TBL_USUARIOS ON TBL_MAQUINAS_VENDA.ID_USUARIO = TBL_USUARIOS.ID_USUARIO"
    strSQL = strSQL & "WHERE TBL_MAQUINAS_VENDA.ID_MAQUINAS_VENDA = "& idok & " "

     

    o id da maquina esta sendo passado atraves do link para a pagina que exibira as informações referente a maquina escolhida pelo admin

    Porém está apresentando o seguinte erro:

    A instrução SELECT inclui uma palavra reservada ou um nome de argumento que está incorreto ou faltando, ou a pontuação está incorreta.
    /GilMaquinas/Painel_admin/fichadisponiveis.asp, line 20

    A linha 20 é que executa a instrução SQL

    SET rsMAQUINAS = conexaoDB.Execute(strSQL)

     

    desde já muito obrigado pela atenção

    terça-feira, 23 de setembro de 2008 13:35
  • Olá André,

     

    Sim, você sempre deve proteger contra SQL Injection. Aliás, se você ler sobre como isso funciona, perceberá que justamente por causa do SQL Injection, qualquer um pode "entrar" no seu sistema, e não apenas o "Administrador".

     

    Respondendo sua dúvida, me parece que falta você indicar o nome dos campos que quer selecionar... Algo como:

     

    Code Snippet

     

    SELECT NomeDaMaquina, NomeDoUsuario FROM TBL_MAQUINAS_VENDA

     

     

     

    Em seguida, me parece que a palavra WHERE está "grudada" com o ID_USUARIO, formando uma palavra só... Creio que um espaço deve resolver...

     

    Code Snippet

     

    strSQL = "SELECT * FROM TBL_MAQUINAS_VENDA INNER JOIN TBL_USUARIOS ON TBL_MAQUINAS_VENDA.ID_USUARIO = TBL_USUARIOS.ID_USUARIO"

     

    strSQL = strSQL & " WHERE TBL_MAQUINAS_VENDA.ID_MAQUINAS_VENDA = "& idok

     

     

    Abraços,

    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    terça-feira, 23 de setembro de 2008 13:46
  • Caio, não está dando certo cara...

    olha o erro que esta dando:

    Parâmetros insuficientes. Eram esperados 3.
    /GilMaquinas/Painel_admin/fichadisponiveis.asp, line 18

    codigo:

    <%

    Response.Expires = 0
    DIM conexaoDB
    DIM rsMAQUINAS , strSQL , TOTALMAQUINAS ,  id , idok
    idok = request.QueryString("id")


    const cntCaminho = "D:\@Trabalho\@Site\GIL MAQUINAS\@SITE-GIL MAQUINAS\@Site\DB_GilMaquinas\DB_GilMaquinas.mdb"
    SET conexaoDB = Server.CreateObject("ADODB.Connection")
    SET rsMAQUINAS = Server.CreateObject("ADODB.Recordset")
    conexaoDB.OPEN "Driver={Microsoft Access Driver (*.mdb)} ;dbq="& cntCaminho
    rsMaquinas.open " TBL_MAQUINAS_VENDA ", conexaoDB

     

    strSQL = "SELECT TBL_MAQUINAS_VENDA.ID_MAQUINA_VENDA, TBL_MAQUINAS_VENDA.ID_USUARIO, TBL_MAQUINAS_VENDA.MARCA, TBL_MAQUINAS_VENDA.MODELO, TBL_MAQUINAS_VENDA.FORMATO, TBL_MAQUINAS_VENDA.ANO_FABRICACAO, TBL_MAQUINAS_VENDA.TIPO, TBL_MAQUINAS_VENDA.FUNCIONAMENTO, TBL_MAQUINAS_VENDA.APARENCIA, TBL_MAQUINAS_VENDA.LOC_CIDADE, TBL_MAQUINAS_VENDA.LOC_ESTADO, TBL_MAQUINAS_VENDA.PRECO, TBL_MAQUINAS_VENDA.PAGAMENTO, TBL_MAQUINAS_VENDA.OBSERVACOES, TBL_MAQUINAS_VENDA.DATA, TBL_USUARIOS.ID_USUARIO, TBL_USUARIOS.NOME, TBL_USUARIOS.DDD, TBL_USUARIOS.TELEFONE, TBL_USUARIOS.DDD_CEL, TBL_USUARIOS.CELULAR, TBL_USUARIOS.EMAIL  FROM TBL_MAQUINAS_VENDA INNER JOIN TBL_USUARIOS ON TBL_MAQUINAS_VENDA.ID_USUARIO = TBL_USUARIOS.ID_USUARIO"


    strSQL = strSQL & " WHERE TBL_MAQUINAS_VENDA.ID_MAQUINAS_VENDA = "& idok

    SET rsMAQUINAS = conexaoDB.Execute(strSQL)

    %>

    que parametros são esses?

    obrigado pela ajuda

    terça-feira, 23 de setembro de 2008 14:32
  • Olá André,

     

    Você tem certeza que a variável "idok" está preenchida com um valor numérico?

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    terça-feira, 23 de setembro de 2008 14:45
  • Sim Caio, ela esta com um valor numerico.

     

    terça-feira, 23 de setembro de 2008 15:02
  • Caio, consegui cara...

    tava dando erro, por que eu estava digitando os nomes dos campos errados....

    ehehhehe

    ta funcionando beleza agora

    valeu pela a ajuda e pela atenção

    muito obrigado mesmo cara

    ate mais!

    terça-feira, 23 de setembro de 2008 16:12
  •  ANDRE.GUSTAVO wrote:

    tava dando erro, por que eu estava digitando os nomes dos campos errados....

     

    Big Smile

     

    Essa só mesmo você conseguiria resolver...

     

    Abraços,
    Caio Proiete




    Caio Proiete
    http://www.caioproiete.com
    terça-feira, 23 de setembro de 2008 16:17