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

Sql Ajuda


Posts Recomendados


  • Tópicos Que Criei:  58
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  195
  • Conteúdo/Dia:  0.04
  • Reputação:   2
  • Pontos/Conquistas:  1.557
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  49

Prezados bom dia

Fiz uma query para retornar CHAPA,NOME(DO FUNCIONÁRIO),PERCENTUAL E RESPONSÁVEL DA PENSÃO.só


Prezados bom dia

Fiz uma query para retornar CHAPA,NOME(DO FUNCIONÁRIO),PERCENTUAL E RESPONSÁVEL DA PENSÃO.só

A que fiz está assim abaixo:Alguém pode ajudar ???

SELECT CHAPA,NOME,PERCENTUAL,RESPONSAVEL
FROM PFDEPEND INNER JOIN ON PPESSOA
WHERE PFDEPEND.CHAPA=:CHAPA

erro apresentado

ORA-00903: invalid table name


Código da Informação: [98f4e2a0e6d84ed8fc0c1238f25a6d5f]

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  29
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  133
  • Conteúdo/Dia:  0.03
  • Reputação:   5
  • Pontos/Conquistas:  979
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Idade:  34

você errou em 2 coisas:

1- seu inner join está com uma syntax inexistente

2- acredito que a tabela PFDEPEND não faz ligação com PPESSOA

SELECT A.CHAPA
      ,C.NOME
      ,A.PERCENTUAL
      ,A.RESPONSAVEL
FROM PFDEPEND      A
INNER JOIN PFUNC   B ON A.CHAPA  = B.CHAPA
INNER JOIN PPESSOA C ON C.CODIGO = B.CODPESSOA
WHERE A.CHAPA = :CHAPA
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Henrique, voce precisa colocar a ligação entre as duas tabelas. E a tabela PPESSOA não se relaciona com a PFDEPEND.

Segue:

SELECT PFDEPEND.CHAPA, PFDEPEND.NOME, PFDEPEND.PERCENTUAL, PFDEPEND.RESPONSAVEL
FROM PFDEPEND INNER JOIN PFUNC ON (PFDEPEND.CHAPA = PFUNC.CHAPA)
WHERE PFDEPEND.CHAPA=:CHAPA
Caso necessite de algum dado da tabela PPESSOA, segue a ligação completa:
SELECT PFDEPEND.CHAPA, PFUNC.NOME, PFDEPEND.PERCENTUAL, PFDEPEND.RESPONSAVEL
FROM PFDEPEND INNER JOIN PFUNC ON (PFDEPEND.CHAPA = PFUNC.CHAPA)
INNER JOIN PPESSOA ON (PFUNC.CODPESSOA = PPESSOA.CODIGO)
WHERE PFDEPEND.CHAPA=:CHAPA
Basta adicionar os campos que voce quiser.
Att,
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  58
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  195
  • Conteúdo/Dia:  0.04
  • Reputação:   2
  • Pontos/Conquistas:  1.557
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  49

você errou em 2 coisas:

1- seu inner join está com uma syntax inexistente

2- acredito que a tabela PFDEPEND não faz ligação com PPESSOA

SELECT A.CHAPA
      ,C.NOME
      ,A.PERCENTUAL
      ,A.RESPONSAVEL
FROM PFDEPEND      A
INNER JOIN PFUNC   B ON A.CHAPA  = B.CHAPA
INNER JOIN PPESSOA C ON C.CODIGO = B.CODPESSOA
WHERE A.CHAPA = :CHAPA

Cara só me diz uma coisa ,pq o nome repete várias vezes como corrigir isto???...Vou utilizar esta query pra trazer somente os colaboradores que tem pensão .

Da maneira q

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  58
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  195
  • Conteúdo/Dia:  0.04
  • Reputação:   2
  • Pontos/Conquistas:  1.557
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  49

Henrique, voce precisa colocar a ligação entre as duas tabelas. E a tabela PPESSOA não se relaciona com a PFDEPEND.

Segue:

SELECT PFDEPEND.CHAPA, PFDEPEND.NOME, PFDEPEND.PERCENTUAL, PFDEPEND.RESPONSAVEL
FROM PFDEPEND INNER JOIN PFUNC ON (PFDEPEND.CHAPA = PFUNC.CHAPA)
WHERE PFDEPEND.CHAPA=:CHAPA
Caso necessite de algum dado da tabela PPESSOA, segue a ligação completa:
SELECT PFDEPEND.CHAPA, PFUNC.NOME, PFDEPEND.PERCENTUAL, PFDEPEND.RESPONSAVEL
FROM PFDEPEND INNER JOIN PFUNC ON (PFDEPEND.CHAPA = PFUNC.CHAPA)
INNER JOIN PPESSOA ON (PFUNC.CODPESSOA = PPESSOA.CODIGO)
WHERE PFDEPEND.CHAPA=:CHAPA
Basta adicionar os campos que voce quiser.
Att,

Amigão, obrigadão pelo retorno, mais não tem o nome do funcionário e repete várias vezes as linhas com os mesmos dados ...

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  14
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  165
  • Conteúdo/Dia:  0.04
  • Reputação:   6
  • Pontos/Conquistas:  983
  • Conteúdo Resolvido:  0
  • Dias Ganho:  2
  • Status:  Offline

Cara só me diz uma coisa ,pq o nome repete várias vezes como corrigir isto???...Vou utilizar esta query pra trazer somente os colaboradores que tem pensão .

Da maneira q

Não é erro, voce está buscando o nome do funcionário. Se ele tem 3 dependentes, irá aparecer o nome do funcionário 3 vezes.

Para resolver isso, voce pode usar GROUP BY no final:

SELECT A.CHAPA

,C.NOME

,A.PERCENTUAL

,A.RESPONSAVEL

FROM PFDEPEND A

INNER JOIN PFUNC B ON A.CHAPA = B.CHAPA

INNER JOIN PPESSOA C ON C.CODIGO = B.CODPESSOA

WHERE A.CHAPA = :CHAPA

GROUP BY A.CHAPA ,C.NOME ,A.PERCENTUAL ,A.RESPONSAVEL

ORDER BY A.CHAPA

Amigão, obrigadão pelo retorno, mais não tem o nome do funcionário e repete várias vezes as linhas com os mesmos dados ...

Não sabia qual nome voce queria, coloquei o do dependente.

Editado por cruzeiro
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  29
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  133
  • Conteúdo/Dia:  0.03
  • Reputação:   5
  • Pontos/Conquistas:  979
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Idade:  34

Vou utilizar esta query pra trazer somente os colaboradores que tem pensão

Talvez então você queira isso aqui:

SELECT A.CHAPA
      ,C.NOME
      ,SUM(A.PERCENTUAL) TOTAL_PERCENT
FROM PFDEPEND      A
INNER JOIN PFUNC   B ON A.CHAPA  = B.CHAPA
INNER JOIN PPESSOA C ON C.CODIGO = B.CODPESSOA
WHERE A.PERCENTUAL IS NOT NULL
AND A.INCPENSAO = 1
GROUP BY A.CHAPA, C.NOME
Editado por yuri.menon
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  58
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  195
  • Conteúdo/Dia:  0.04
  • Reputação:   2
  • Pontos/Conquistas:  1.557
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  49

Talvez então você queira isso aqui:

SELECT A.CHAPA
      ,C.NOME
      ,SUM(A.PERCENTUAL) TOTAL_PERCENT
FROM PFDEPEND      A
INNER JOIN PFUNC   B ON A.CHAPA  = B.CHAPA
INNER JOIN PPESSOA C ON C.CODIGO = B.CODPESSOA
WHERE A.PERCENTUAL IS NOT NULL
AND A.INCPENSAO = 1
GROUP BY A.CHAPA, C.NOME

Oi Yuri show !!!

Pra incluir um campo PFCODIX.VALOR E PFCODIX.NROVEZES . Como faço ?

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  29
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  133
  • Conteúdo/Dia:  0.03
  • Reputação:   5
  • Pontos/Conquistas:  979
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Idade:  34

Oi Yuri show !!!

Pra incluir um campo PFCODIX.VALOR E PFCODIX.NROVEZES . Como faço ?

Henrique, o mais importante é você ENTENDER como funcionam as consultas SQL. O que eu quero dizer...

Se eu simplesmente adicionar um JOIN PFCODFIX irei duplicar os valores, mas como o Cruzeirense disse, isso não é um erro. Isso é o que chamam de relação 1 para n, em outras palavras, enquanto a tabela PFUNC só existe 1 registro de chapa '00064', a tabela PFCODFIX pode ter 10 registros com essa mesma chapa.

Não sei como funciona essa tabela PFCODFIX, reparei que ela possui um CODEVENTO, que provavelmente não deve ser desconsiderado, mas vamos lá, a um exemplo básico de como ficaria:

SELECT A.CHAPA
      ,C.NOME
      ,SUM(A.PERCENTUAL) TOTAL_PERCENT
      ,SUM(D.VALOR) VALOR
      ,SUM(D.NROVEZES) NROVEZES
FROM PFDEPEND       A
INNER JOIN PFUNC    B ON A.CHAPA  = B.CHAPA
INNER JOIN PPESSOA  C ON C.CODIGO = B.CODPESSOA
LEFT  JOIN PFCODFIX D ON D.CHAPA  = B.CHAPA
WHERE A.PERCENTUAL IS NOT NULL
AND A.INCPENSAO = 1
GROUP BY A.CHAPA, C.NOME

Quando temos um GROUP BY, só podemos adicionar novos campos dentro da SELECT de 2 formas: ou dentro de SUM (que foi o que eu fiz), ou ele deve ser replicado dentro do GROUP BY, assim como os campos A.CHAPA e C.NOME estão dentro do GROUP BY

Obs: pesquisa certinho sobre esse NROVEZES, porque talvez ele não possa ir dentro do SUM.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  58
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  672
  • Conteúdo/Dia:  0.11
  • Reputação:   25
  • Pontos/Conquistas:  4.005
  • Conteúdo Resolvido:  0
  • Dias Ganho:  18
  • Status:  Offline
  • Idade:  48

Olá Henrique

Pelo que estou vendo você está iniciando na elaboração de consultas em banco de dados.

Então uma boa dica para você é sempre IDENTAR o código, deixando a consulta assim:

SELECT
 PFUNC.CHAPA,
 PFUNC.NOME,
 PFDEPEND.PERCENTUAL,
 PFDEPEND.RESPONSAVEL
FROM
 PFDEPEND
 INNER JOIN PFUNC
  ON
  PFDEPEND.CODCOLIGADA = PFUNC.CODCOLIGADA AND
  PFDEPEND.CHAPA = PFUNC.CHAPA
WHERE
 PFDEPEND.CHAPA= :CHAPA
GROUP BY
 PFUNC.CHAPA,
 PFUNC.NOME,
 PFDEPEND.PERCENTUAL,
 PFDEPEND.RESPONSAVEL

Outra dica é tentar utilizar o próprio nome das tabelas junto aos campos para que a leitura da query seja melhor interpletada logo de cara por qualquer analista, incluindo quem a fez ou ainda a está fazendo.

Se por acaso for chamar a mesma tabela mais de uma vez pode apelidar o nome original da tabela com mais algum complemente como por exemplo:

PFUNC PFUNC_ATIVO 
PFUNC PFUNC_INATIVO

E como o amigo falou acima, se quizer colocar mais campo nesta consulta você deve incluílo no GROUP BY ou em um SUM.

Se o campo novo não existir nas tabelas do FROM você deve fazer um novo JOIN e tendo cuidado com a clausulas INNER, LEFT, RIGHT, FULL, etc....

É isso aí, espero ter contribuído em algo.

:victory:

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.