Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Problema com Relacionamento Tabelas


Hebert Canto

Posts Recomendados


  • Tópicos Que Criei:  8
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  38
  • Conteúdo/Dia:  0.01
  • Reputação:   2
  • Pontos/Conquistas:  272
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  47

Olá Pessoal, bom tarde !!!!

Preciso fazer um relatório onde apartir de um movimento eu busque as informações do movimento de origem. Estou utilizando a tabela TMOVRELAC, mas quando coloco os itens as informações aparecem em duplicidade.

No movimento de origem a única informação que preciso é o número do movimento.

Se alguém puder me ajudar fico muito agradecido.

Abaixo coloco a sentença que criei:

SELECT DISTINCT

TMOV.IDMOV

,TMOV.NUMEROMOV

,TMOV.DATAEMISSAO

,TITMMOV.IDPRD

,TITMMOV.QUANTIDADE

,SF.NUMEROMOV 'N. SF ORIGEM'

FROM TMOV

INNER JOIN TITMMOV

ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA

AND TITMMOV.IDMOV = TMOV.IDMOV

INNER JOIN TMOVRELAC

ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA

AND TMOVRELAC.IDMOVDESTINO = TMOV.IDMOV

LEFT JOIN (SELECT DISTINCT TMOV.IDMOV

,TMOV.NUMEROMOV

,FCFO.NOMEFANTASIA

FROM TMOV

INNER JOIN FCFO

ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA

AND FCFO.CODCFO = TMOV.CODCFO) SF ON TMOVRELAC.IDMOVORIGEM = SF.IDMOV

WHERE TMOV.DATAEMISSAO >= '01/01/2011'

AND TMOV.DATAEMISSAO <= '13/01/2011'

AND TMOV.CODTMV = '1.2.19'

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  101
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  456
  • Conteúdo/Dia:  0.08
  • Reputação:   0
  • Pontos/Conquistas:  3.290
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  49

Tente assim

NIK

-----

SELECT DISTINCT

TMOV.IDMOV

,TMOV.NUMEROMOV

,TMOV.DATAEMISSAO

,TITMMOV.IDPRD

,TITMMOV.QUANTIDADE

,SF.NUMEROMOV 'N. SF ORIGEM'

FROM TMOV

INNER JOIN TITMMOV

ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA

AND TITMMOV.IDMOV = TMOV.IDMOV

INNER JOIN TMOVRELAC

ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA

AND

TMOVRELAC.IDMOVDESTINO (ERRADO)

TMOVRELAC.IDMOVORIGEM = TMOV.IDMOV

LEFT JOIN (SELECT DISTINCT TMOV.IDMOV

,TMOV.NUMEROMOV

,FCFO.NOMEFANTASIA

FROM TMOV

INNER JOIN FCFO

ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA

AND FCFO.CODCFO = TMOV.CODCFO) SF ON TMOVRELAC.IDMOVORIGEM = SF.IDMOV

WHERE TMOV.DATAEMISSAO >= '01/01/2011'

AND TMOV.DATAEMISSAO <= '13/01/2011'

AND TMOV.CODTMV = '1.2.19'

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  8
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  38
  • Conteúdo/Dia:  0.01
  • Reputação:   2
  • Pontos/Conquistas:  272
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  47

Tente assim

NIK

-----

SELECT DISTINCT

TMOV.IDMOV

,TMOV.NUMEROMOV

,TMOV.DATAEMISSAO

,TITMMOV.IDPRD

,TITMMOV.QUANTIDADE

,SF.NUMEROMOV 'N. SF ORIGEM'

FROM TMOV

INNER JOIN TITMMOV

ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA

AND TITMMOV.IDMOV = TMOV.IDMOV

INNER JOIN TMOVRELAC

ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA

AND

TMOVRELAC.IDMOVDESTINO (ERRADO)

TMOVRELAC.IDMOVORIGEM = TMOV.IDMOV

LEFT JOIN (SELECT DISTINCT TMOV.IDMOV

,TMOV.NUMEROMOV

,FCFO.NOMEFANTASIA

FROM TMOV

INNER JOIN FCFO

ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA

AND FCFO.CODCFO = TMOV.CODCFO) SF ON TMOVRELAC.IDMOVORIGEM = SF.IDMOV

WHERE TMOV.DATAEMISSAO >= '01/01/2011'

AND TMOV.DATAEMISSAO <= '13/01/2011'

AND TMOV.CODTMV = '1.2.19'

NIK,

Tentei conforme você sugeriu e não trouxe nenhum resultado.

A consulta parte de um movimento de destino, '1.2.19', e eu preciso buscar na origem o número do movimento. Na verdade este movimento '1.2.19', de destino, é gerado pelo movimento '1.1.04', origem, através de faturamento e neste processo eu posso estar escolhendo mais de um registro para faturar, mas sem agrupar os itens.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  101
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  456
  • Conteúdo/Dia:  0.08
  • Reputação:   0
  • Pontos/Conquistas:  3.290
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  49

VEJA...

NIK

--------

SELECT A.ORIGEM, NUMORIGEM, EMORIGEM,

IDPRD, QUANTIDADE

--,SF.NUMEROMOV 'N. SF ORIGEM'

FROM

(SELECT TMOV.CODCOLIGADA, TMOV.CODCFO, TMOV.IDMOV ORIGEM,TMOV.NUMEROMOV NUMORIGEM,TMOV.DATAEMISSAO EMORIGEM,

A.IDMOV DESTINO ,A.NUMEROMOV NUMDESTINO ,A.DATAEMISSAO EMDESTINO

FROM TMOV

INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA

AND TMOVRELAC.IDMOVORIGEM = TMOV.IDMOV

INNER JOIN TMOV A

ON TMOVRELAC.CODCOLDESTINO = A.CODCOLIGADA AND TMOVRELAC.IDMOVDESTINO = A.IDMOV

/*

LEFT JOIN (SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,FCFO.NOMEFANTASIA FROM TMOV

INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA

AND FCFO.CODCFO = TMOV.CODCFO) SF ON TMOVRELAC.IDMOVORIGEM = SF.IDMOV

*/

WHERE A.DATAEMISSAO >= '01/01/2011'

AND A.DATAEMISSAO <= '01/13/2011'

AND A.CODTMV = '1.2.19')A

INNER JOIN TITMMOV B ON A.CODCOLIGADA = B.CODCOLIGADA AND A.ORIGEM = B.IDMOV

INNER JOIN FCFO C ON A.CODCOLIGADA = C.CODCOLIGADA AND A.CODCFO = C.CODCFO

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  7
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  28
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  211
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline

Cara testei assim e funcionou aqui o problema da no inner join

SELECT DISTINCT

TMOV.IDMOV

,TMOV.NUMEROMOV

,TMOV.DATAEMISSAO

,TITMMOV.IDPRD

,TITMMOV.QUANTIDADE

,TMOVRELAC.IDMOVORIGEM

,SF.NUMEROMOV 'N. SF ORIGEM'

FROM TMOV INNER JOIN TITMMOV ON TITMMOV.CODCOLIGADA = TMOV.CODCOLIGADA AND TITMMOV.IDMOV = TMOV.IDMOV

INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLDESTINO = TMOV.CODCOLIGADA AND TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA

AND TMOVRELAC.IDMOVDESTINO = TMOV.IDMOV

LEFT JOIN (SELECT DISTINCT TMOV.IDMOV ,TMOV.NUMEROMOV ,FCFO.NOMEFANTASIA

FROM TMOV INNER JOIN FCFO ON FCFO.CODCOLIGADA = TMOV.CODCOLIGADA AND FCFO.CODCFO = TMOV.CODCFO) SF on TMOVRELAC.IDMOVORIGEM = SF.IDMOV

WHERE TMOV.IDMOV = 29038

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  8
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  38
  • Conteúdo/Dia:  0.01
  • Reputação:   2
  • Pontos/Conquistas:  272
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  47

Prezado Nik,

Testei e verifiquei a última sugestão sua, só que o INNER JOIN TITMMOV B, ele está trazendo todos os itens do movimento de origem, e ocorre situações aqui em que o movimento é desdobrado, tentei altera-lo para trazer os itens de destino, mas mesmo assim ele duplica as informações. Quando há mais de um movimento de origem.

Voltei a situação anterior, onde o sistema apresenta todos os itens do movimento de origem, daí quebrei um pouco minha cabeça pensando como poderia fazer utilizando os itens do movimento de origem, consegui o resultado que eu precisava utilizando um filtro no final da sentença, onde apresentasse apenas os itens em que a "quantidadeareceber < quantidade" e na apresentação do resultado eu faço "quantidade - quantidadeareceber", pois assim eu tenho a quantidade que foi faturado.

Cara deu certinho e o relatório já está pronto.

Te agradeço pela ajuda que foi de grande valia.

Quero agradecer também ao Emmanoel Antunes que deu uma força também.

Obrigado a todos, assunto encerrado.

segue como ficou a sentença, caso alguém precise:

SELECT

A.ORIGEM

, A.NUMORIGEM

, A.EMORIGEM

, A.DESTINO

, A.NUMDESTINO

, A.EMDESTINO

, PRD.CODIGOREDUZIDO

, (B.QUANTIDADE - B.QUANTIDADEARECEBER) QTDEFAT

FROM

(SELECT distinct

TMOV.CODCOLIGADA

, TMOV.CODCFO

, TMOV.IDMOV ORIGEM

, TMOV.NUMEROMOV NUMORIGEM

, TMOV.DATAEMISSAO EMORIGEM

, A.IDMOV DESTINO

, A.NUMEROMOV NUMDESTINO

, A.DATAEMISSAO EMDESTINO

FROM TMOV

INNER JOIN TMOVRELAC ON TMOVRELAC.CODCOLORIGEM = TMOV.CODCOLIGADA

AND TMOVRELAC.IDMOVORIGEM = TMOV.IDMOV

INNER JOIN TMOV A

ON TMOVRELAC.CODCOLDESTINO = A.CODCOLIGADA AND TMOVRELAC.IDMOVDESTINO = A.IDMOV

WHERE A.DATAEMISSAO = '06/01/2011'

AND A.CODTMV = '1.2.19')A

INNER JOIN TITMMOV B

ON A.CODCOLIGADA = B.CODCOLIGADA

AND A.ORIGEM = B.IDMOV

INNER JOIN TPRD PRD

ON B.CODCOLIGADA = PRD.CODCOLIGADA

AND B.IDPRD = PRD.IDPRD

LEFT JOIN TPRDCOMPL

ON PRD.CODCOLIGADA = TPRDCOMPL.CODCOLIGADA

AND PRD.IDPRD = TPRDCOMPL.IDPRD

INNER JOIN FCFO C

ON A.CODCOLIGADA = C.CODCOLIGADA

AND A.CODCFO = C.CODCFO

WHERE (QUANTIDADEARECEBER < QUANTIDADE)

ORDER BY NUMDESTINO

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

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

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.