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

(Resolvido) Consulta


DiegoVix

Pergunta

Bom Tarde!!!

estou precisando selecionar os servidores que estao ativos, que tem mais de um curso cadastrado, e que este curso SEJE duplicado

Tabela PESFISICA.P

COD (PK)

NOME

ENDERECO

TABELA SERVIDOR .S

MATRICULA

SITUAÇÃO

COD (FK)

CARGO

TABELA CURSOPFEXT.C

CODCURSO(PK)

NOME CURSO

CODPESFIS(FK

SELECT *

FROM PESFISICA.P, SERVIDOR.S

WHERE PESFISICA.P . COD.P = SERVIDOR.S . COD.P

and SITUACAO = 1 (SE ELE ESTA ATIVO OU não)

and PESFISICA.P . COD.P

in (select CURSOPFEXT.C . COD.P from CURSOPFEXT.C)

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Diego,

Dê uma olhada no script... mas antes uma pergunta: cadê o "alias"? rs...

SELECT *
FROM PESFISICA.P, SERVIDOR.S, CURSOPFEXT.C
WHERE PESFISICA.P.COD.P=SERVIDOR.S.COD.P 
and SITUACAO = 1
and PESFISICA.P.COD.P = CURSOPFEXT.C.CODPESFIS
and CURSOPFEXT.C.CODCURSO in (select CODCURSO from CURSOPFEXT.C group by CODCURSO having count (CODCURSO)>1)

Link para o comentário
Compartilhar em outros sites

  • 0

E ai Fulvio, beleza??

rapaz... acho que não entendi esse alias... mas perdao... e porque so meio leigo... rs

meu problema e o seguinte... seu script me fez chega numa conclusao que eu não sabia que funcionava assim... e porque eu so novo nesta empresa... e eu não aprendi ainda todo o banco de dados.... mas vamos la.

ex: '' 130 diego souza rua luiz avidos ...''

'' 92 pedagogia 01/01/2009 13/12/2009 ... ''

'' 93 pedagogia 01/01/2010 13/12/2009 ... ''

Ai tipo assim... o usuario conseguia incluir o mesmo curso mais de uma vez... pois ele não testava na hora de gravar o campo nome... so testava o campo periodo de inicio e termino de curso... ai eles cadastraram mais de uma pessoa com o mesmo curso... porem de data de inicio e fim diferente...

eu preciso fazer um levantamento... so que quando cadastro uma pessoa, eu tenho que adcionar essa pessoa na tabela servidor, pois é na tabela servidor que indico se essa pessoa esta ativo (trabalhando) ou não... e o codigo dele no sistema e gerado nesse cadastro de servidor tambem!!!!!!

Conseguiu entender???

eu to tendo umas dificuldades pois eu não trabalhava com sql... tinha uma noção...!!!

abraço!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Diego,

Com este script você consegue verificar se os nomes estão iguais também. Ao invés de agrupar por codigo, agrupe por "NOME CURSO".

Ficaria assim:

SELECT *
FROM PESFISICA.P, SERVIDOR.S, CURSOPFEXT.C
WHERE PESFISICA.P.COD.P=SERVIDOR.S.COD.P 
and SITUACAO = 1
and PESFISICA.P.COD.P = CURSOPFEXT.C.CODPESFIS
and CURSOPFEXT.C.NOMECURSO in (select NOMECURSO from CURSOPFEXT.C group by NOMECURSO having count (NOMECURSO)>1)
Caso queria acrescentar as datas Inicial e Final, também pode colocar no script. Ficaria assim:
SELECT *
FROM PESFISICA.P, SERVIDOR.S, CURSOPFEXT.C
WHERE PESFISICA.P.COD.P=SERVIDOR.S.COD.P 
and SITUACAO = 1
and PESFISICA.P.COD.P = CURSOPFEXT.C.CODPESFIS
and CURSOPFEXT.C.NOMECURSO in (select NOMECURSO from CURSOPFEXT.C group by 
NOMECURSO, ColoqueDataInicial, ColoqueDataFinal having count (NOMECURSO)>1)

OBS: o group by com a data inicial e final só vai funcionar se elas forem iguais. Como está fazendo um levantamento, seria interessante identificar se há interceção entre as datas com descritivos iguais. Aí é outros 500 rs...

Se tiver alguma dúvida, pode postar...

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde Diego,

Com este script você consegue verificar se os nomes estão iguais também. Ao invés de agrupar por codigo, agrupe por "NOME CURSO".

Ficaria assim:

SELECT *
FROM PESFISICA.P, SERVIDOR.S, CURSOPFEXT.C
WHERE PESFISICA.P.COD.P=SERVIDOR.S.COD.P 
and SITUACAO = 1
and PESFISICA.P.COD.P = CURSOPFEXT.C.CODPESFIS
and CURSOPFEXT.C.NOMECURSO in (select NOMECURSO from CURSOPFEXT.C group by NOMECURSO having count (NOMECURSO)>1)
Caso queria acrescentar as datas Inicial e Final, também pode colocar no script. Ficaria assim:
SELECT *
FROM PESFISICA.P, SERVIDOR.S, CURSOPFEXT.C
WHERE PESFISICA.P.COD.P=SERVIDOR.S.COD.P 
and SITUACAO = 1
and PESFISICA.P.COD.P = CURSOPFEXT.C.CODPESFIS
and CURSOPFEXT.C.NOMECURSO in (select NOMECURSO from CURSOPFEXT.C group by 
NOMECURSO, ColoqueDataInicial, ColoqueDataFinal having count (NOMECURSO)>1)

OBS: o group by com a data inicial e final só vai funcionar se elas forem iguais. Como está fazendo um levantamento, seria interessante identificar se há interceção entre as datas com descritivos iguais. Aí é outros 500 rs...

Se tiver alguma dúvida, pode postar...

Eu conseguir achar todos aqueles que tem mais de um curso cadastrados... mas ainda não filtro aquele processo de vim somente os cursos com mesmo nome!!!!! .... eu usei esse codido

SELECT *

FROM PES, SERV , CURS

WHERE PES.CODPES = SERV.CODPES

AND SITUACAOPES = 1

AND PES.CODPES = CURS.CODPES

AND CURS.NOMECURS IN

(select NOMECURS from CURS

group by NOMECURS having count (NOMECURS)>1) [code]

ESSE AI FUNCIONOU PARA ACHAR OS SERVIDORES QUE ESTAO COM MAIS DE 1 CURSO CADASTRADOS!!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Diego,

Não entendi direito.

SELECT *
FROM PES, SERV , CURS
WHERE PES.CODPES = SERV.CODPES
AND SITUACAOPES = 1
AND PES.CODPES = CURS.CODPES
AND CURS.NOMECURS IN 
(select NOMECURS from CURS
group by NOMECURS having count (NOMECURS)>1)
Esse select deve ter te retornado as pessoas que estão cadastradas em mais de um curso, sendo estes cursos duplicados pelo nome, ok? Por causa do "having count >1", apenas aparecerá os cursos duplicados. você quer agora todos os cursos com o nome duplicado? Caso seja isso, execute somente o subselect:
select NOMECURS from CURS group by NOMECURS having count (NOMECURS)>1

Link para o comentário
Compartilhar em outros sites

  • 0
Bom dia Diego,

Não entendi direito.

SELECT *
FROM PES, SERV , CURS
WHERE PES.CODPES = SERV.CODPES
AND SITUACAOPES = 1
AND PES.CODPES = CURS.CODPES
AND CURS.NOMECURS IN 
(select NOMECURS from CURS
group by NOMECURS having count (NOMECURS)>1)
Esse select deve ter te retornado as pessoas que estão cadastradas em mais de um curso, sendo estes cursos duplicados pelo nome, ok? Por causa do "having count >1", apenas aparecerá os cursos duplicados. você quer agora todos os cursos com o nome duplicado? Caso seja isso, execute somente o subselect:
select NOMECURS from CURS group by NOMECURS having count (NOMECURS)>1

Dexa eu te explicar melhor pois eu fui muito superficial... rsss... eu quero tirar todos os servidores que possuem o mesm curso cadastrado mais de uma vez... por exemplo

''eu tenho uma pessoa cadastrada no sistema''

nome: diego de souza

cursos: 1001 - pedagogia

1002 - pedagogia

nome: maria da silva

cursos: 3500 - informatica

3501 - ingles

o meu sistema cadastra o curso dentro do cadastro de pessoa... sendo que não posso consultar cursos que foram cadastrados anteriormente... ele abre um novo cadastro a medida que eu estou incluindo uma nova pessoa... ai teve uns usuarios que quando cadastraram esses cursos... erraram na data de inicio e fim do curso, ai foram e incluiram o curso novamente com a data certa... ai eu preciso listar todas as pessoas que tem o curso repetido dentro do seu cadastro como no exemplo ai acima do diego de souza... pra você entender um pouquinho melhor meu banco eu deixei no primeiro post. o exemplo da telas!!!!!

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde Diego,

Dá uma olhada neste script: recupera as pessoas que possuem cadastro em cursos duplicados.

SELECT * from PES where CODPES in (select CODPES from CURS group by NOMECURS,CODPES having count (NOMECURS)>1)

Esse é o script... deu certo... !!!! Maravilha!!!! Brigado mais uma vez Fulvio!!!!

Este ta resolvido!!!!

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