none
JOIN entre dua tabelas. RRS feed

  • Pergunta

  • bom dia a todos,

    eu estou fazendo uma consulta entre duas tabelas,sendo que a consulta deve me retornar o numero do pedido da tabela SC5, e os dados do pedido da tabela SC6, para isto monte a seguinte Query

    SELECT  A.C5_NUM ,
            A.C5_CLIENTE ,
            B.C6_QTDVEN ,
            B.C6_PRODUTO ,
            B.C6_DESCRI ,
            B.C6_XNUMSER
    FROM    dbo.SC5030 A
            INNER JOIN A.SC5 ON B.C6_NUM = B.C6_PRODUTO
    WHERE   A.C5_NUM = 'SY1RA4'
            AND A.C5_CLIENTE = '000551'
            AND A.D_E_L_E_T_ = ''
            AND B.D_E_L_E_T_ = ''

    porem esta me retornando a seguinte mensagem.

    Invalid object name 'A.SC5'.

    nome da tabelas

    SC5, SC6.

    desde já agradeço a todos.


            

    analista

    segunda-feira, 14 de janeiro de 2013 15:38

Respostas

  • Boa tarde lutador,

    Desculpe, mas, você tem certeza que o nome dessa tabela é realmente SC5?? Pq no from vc usou a SC5030! O que parece é o nome da tabela (SC5) usada no JOIN não está completo...

    At.
    Rafael


    Pode ser que esteja incompleto, mas também falta o alias B

    Pedro Martins
    Portugal
    https://www.linkedin.com/in/rechousa

    • Marcado como Resposta Flaviano_fs segunda-feira, 14 de janeiro de 2013 17:06
    segunda-feira, 14 de janeiro de 2013 15:53

Todas as Respostas

  • Olá,

    Aparentemente tens alguma coisa mal pois dizes no texto que o nome da tabela se clama SC5, mas no JOIN estás a usar o A.SC5 como se fosse um campo.

    Em vez de:

    INNER JOIN A.SC5 ON B.C6_NUM = B.C6_PRODUTO

    não será algo como:

    INNER JOIN dbo.SC5 B ON B.C6_NUM = B.C6_PRODUTO


    Pedro Martins
    Portugal
    https://www.linkedin.com/in/rechousa

    segunda-feira, 14 de janeiro de 2013 15:42
  • Rechousa,

    obrigado por ter me respondido, e fiz conforme você me orientou mas não teu certo da o mesmo erro.


    analista

    segunda-feira, 14 de janeiro de 2013 15:48
  • Boa tarde lutador,

    Desculpe, mas, você tem certeza que o nome dessa tabela é realmente SC5?? Pq no from vc usou a SC5030! O que parece é o nome da tabela (SC5) usada no JOIN não está completo...

    At.
    Rafael

    segunda-feira, 14 de janeiro de 2013 15:49
  • Boa tarde lutador,

    Desculpe, mas, você tem certeza que o nome dessa tabela é realmente SC5?? Pq no from vc usou a SC5030! O que parece é o nome da tabela (SC5) usada no JOIN não está completo...

    At.
    Rafael


    Pode ser que esteja incompleto, mas também falta o alias B

    Pedro Martins
    Portugal
    https://www.linkedin.com/in/rechousa

    • Marcado como Resposta Flaviano_fs segunda-feira, 14 de janeiro de 2013 17:06
    segunda-feira, 14 de janeiro de 2013 15:53
  • Boa tarde lutador,

    Desculpe, mas, você tem certeza que o nome dessa tabela é realmente SC5?? Pq no from vc usou a SC5030! O que parece é o nome da tabela (SC5) usada no JOIN não está completo...

    At.
    Rafael


    Pode ser que esteja incompleto, mas também falta o alias B

    Pedro Martins
    Portugal
    https://www.linkedin.com/in/rechousa

    Realmente...

    Rafael

    segunda-feira, 14 de janeiro de 2013 15:56
  • Lutador, acontece o seguinte:

    Quando tu utiliza A.C5 ou B.C6, qualquer que seja o campo, este A ou B que vem na frente do campo é o Alias ou um apelido que tu da pra tua tabela, com a finalidade de não escrever o nome delta toda vez antes de cada campo.

    dbo. significa que tu esta acessando objetos do owner dbo, um esquema do SQL Server.

    Quando tu faz o INNER JOIN, ele deve ser feito entre duas tabelas e a cláusula ON é os campos que se referenciam entre as tabelas:

    TABELA A INNER JOIN TABELA B ON A.CAMPO_A = B.CAMPO_B

    No teu exemplo tu fala que as tabelas se chamam SC5 e SC6, mas no teu FROM a primeira tabela A se chama SC5030, acredito que teu problema seja sintaxe, ajustando as tabelas, campos e colocando na ordem certa deve funcionar.

    Se tiver ainda dúvidas, posta a estrutura das tabelas que de repente possamos ajudar melhor.

    Espero que ajude, vlew.


    --
    Marcus Vinícius Bittencourt
    blog: isqlserver.wordpress.com
    www.sqlserverRS.com.br

    segunda-feira, 14 de janeiro de 2013 16:36
  • Rafael ,realmente esta o nome da tabela estava errado.

    analista

    segunda-feira, 14 de janeiro de 2013 16:39
  • Lutador,

    Caso tenha solucionado seu problema e nossas respostas tenha te ajudado de algum modo, marque-as como resposta aquelas que você achar mais conveniente...

    Atenciosamente,
    Rafael

    segunda-feira, 14 de janeiro de 2013 16:45
  • Pronto foi resolvido da seguinte forma.

           

    SELECT  A.C5_NUM ,
            A.C5_CLIENTE ,
            B.C6_QTDVEN ,
            B.C6_PRODUTO ,
            B.C6_DESCRI ,
            B.C6_XNUMSER
    FROM    dbo.SC5030 A
            INNER JOIN dbo.SC6030 B ON A.C5_NUM = B.C6_NUM

    WHERE   A.C5_NUM = 'SY1RA4'
            AND A.C5_CLIENTE = '000551'
            AND A.D_E_L_E_T_ = ''
            AND B.D_E_L_E_T_ = ''

    obrigado a todos .


    analista

    segunda-feira, 14 de janeiro de 2013 17:06