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

(Resolvido) Select com regras de visualização


SuporteHSL

Pergunta

Já fiz várias tentativas mas não consegui, tentarei explicar...

Tabela: Funcionarios (todos os funcionários)

CodFunc, NomeFunc, CodSetor

Tabela: Setores (são os setores da empresa)

CodSetor, DescrSetor

Tabela: PontoGestao (regra de permissão para os pontos, inclui o funcionário e setor que fará a gerenciamento)

CodGestor(seria o código do funcionários gestor), CodSetor

Tabela: PontoGestaoNeg (são os funcionários que o gestor não pode ver, mesmo estando dentro dos setores liberados)

CodGestor, CodFuncNeg(funcionário que não poderia ver)

Fiz os Inner join entre as tabelas, porém não sei como usar a Where para que os funcionários da tabela PontoGestaoNeg sejam exclusos da consulta.

Espero que possam me entender.

Editado por SuporteHSL
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Denis, acabei tendo que mudar os nomes das tabelas...

Tab: Colaboradores

codigo, nome

Tab: Bio_bhGes

GesCod (seria o gestor), SetorCod (setores permitidos)

Tab: Bio_bhGesNeg

GesCod, ColCod (colaboradores que não devem ser visualizados)



Minha Consulta ficou assim:

I - Visualizar os vinculados ao setor

SELECT bhges.*, col.codigo, col.nome

FROM bio_bhges as bhges

inner join colaboradores as col on col.codsetor=bhges.setorcod

where bhges.gescod=654

Retorna 14 registros (todos do setor 103)

II - Visualizar os regados a mim

select distinct codigo from bio_bhgesneg where gescod=654


Retorna 1 registro (o que não posso visualizar)

III - Agora se eu juntar exibindo os que compõem o setor exceto os negados.

SELECT bhges.*, col.codigo, col.nome

FROM bio_bhges as bhges

inner join colaboradores as col on col.codsetor=bhges.setorcod

where bhges.gescod=654

and

not col.codigo in (select distinct codigo from bio_bhgesneg where gescod=654)

Nenhum registro retornado, teria que retornar 13 (14 total - 1 negado)



Editado por SuporteHSL
Link para o comentário
Compartilhar em outros sites

  • 0

Ehh... não seria:

SELECT bhges.*, col.codigo, col.nome
FROM bio_bhges as bhges
inner join colaboradores as col on col.codsetor=bhges.setorcod
where bhges.gescod=654
and
col.codigo NOT IN (select distinct codigo from bio_bhgesneg where gescod=654)

o NOT depois do nome do campo?

Link para o comentário
Compartilhar em outros sites

  • 0

Markus havia apenas um erro no nome do campo da segunda select, de codigo para colcod

SELECT bhges.*, col.codigo, col.nome
FROM bio_bhges as bhges
inner join colaboradores as col on col.codsetor=bhges.setorcod
where bhges.gescod=654
and
col.codigo NOT IN (select distinct ColCod from bio_bhgesneg where gescod=654)

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...