ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Select comparando uma lista de um campo com um id?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 16918
Localização: Curitiba-PR

MensagemEnviada: Qua Jan 11, 2017 4:48 pm    Assunto: Select comparando uma lista de um campo com um id? Responder com Citação

Tenho uma tabela chamada usuarios que tem um campo chamado array_permissoes que contém um string assim
usuario 1
array_permissao 1,3,4,9,10

usuario 2
array_permissao 3,11

E tenho outra tabela chamada permissão com o id
integer
1
2
3
4
5
6
7
etc


Como faço um select na tabela usuario comparando com a tabela permissão e saber se tem no array_permissao

Por exemplo se eu passar o 3 numa condição where ele verifica se tiver ele retorna como is not empty
_________________
Meus aplicativos para Android Free.
https://play.google.com/store/apps/details?id=br.com.coudsys.cruzadinha
https://play.google.com/store/apps/details?id=br.com.couldsys.desafiobiblico
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 10583

MensagemEnviada: Qua Jan 11, 2017 4:59 pm    Assunto: Responder com Citação

Boa tarde,

Qual banco de dados (e versão) você está utilizando?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 16918
Localização: Curitiba-PR

MensagemEnviada: Qua Jan 11, 2017 5:03 pm    Assunto: Responder com Citação

imex escreveu:
Boa tarde,

Qual banco de dados (e versão) você está utilizando?


Postgres 8.1

Tipo fazer algo + ou - assim Imex
Código:
select p.id_permissao, 'usuario com permissão' as usuario
from webc_permissao p
inner join webc_usuario u on (cast(u.array_permissao as integer) = p.id_permissao)
where UPPER(nome) = upper('clientes')

_________________
Meus aplicativos para Android Free.
https://play.google.com/store/apps/details?id=br.com.coudsys.cruzadinha
https://play.google.com/store/apps/details?id=br.com.couldsys.desafiobiblico
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 10583

MensagemEnviada: Qua Jan 11, 2017 5:19 pm    Assunto: Responder com Citação

Não tenho nenhuma experiência com o PostgreSQL, mas experimente mais ou menos dessa forma:

Código:
inner join webc_usuario u on (position(',' || cast(p.id_permissao as varchar(10)) || ',' in ',' || u.array_permissao || ',' ) > 0)


A intenção seria converter o id da permissão para varchar e utilizar a função Position para verificar se ele está dentro do campo array_permissao.

Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-residencial-casa
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 16918
Localização: Curitiba-PR

MensagemEnviada: Qua Jan 11, 2017 5:38 pm    Assunto: Responder com Citação

imex escreveu:
Não tenho nenhuma experiência com o PostgreSQL, mas experimente mais ou menos dessa forma:

Código:
inner join webc_usuario u on (position(',' || cast(p.id_permissao as varchar(10)) || ',' in ',' || u.array_permissao || ',' ) > 0)


A intenção seria converter o id da permissão para varchar e utilizar a função Position para verificar se ele está dentro do campo array_permissao.

Espero que ajude

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-residencial-casa
Olá Imex, parece que deu certo
Código:
select p.id_permissao, 'usuario com permissão' as usuario
from webc_permissao p
inner join webc_usuario u on
(position(',' || cast(p.id_permissao as varchar(10)) || ',' in ',' || u.array_permissao || ',' ) > 0)
where UPPER(nome) = upper('ORÇAMENTOS')
and u.id = 7


pelo menos nos testes iniciais funcionou;

Obrigado Amigo.
_________________
Meus aplicativos para Android Free.
https://play.google.com/store/apps/details?id=br.com.coudsys.cruzadinha
https://play.google.com/store/apps/details?id=br.com.couldsys.desafiobiblico
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB