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

Pesquisa apenas quando valor relacionado > 0


Suporte HSL

Pergunta

Possuo duas tebelas

User

- coduser (int PK), depart_cod (int), cargos_cod(int), funcoes_cod(int)

image.png.643b348797870cdfe82bcd4f5b88ca0c.png

Regras

- idview (int PK), depart_cod (int), cargos_cod(int), funcoes_cod(int)

image.png.5049af1cc6cc1d9b39c0a914b6c7356a.png

 

Objetivo durante a consulta na tabela regra retorne os usuários que atendem as regras, porém poderá ter regras possuem uma condição 0 aceitando todos, ou seja, regra idview 26  qualquer usuários do departamento 142 deverá ser relacionado.

 

Resultados esperados por cada regra:

idview 30 = coduser: 40,44

idview 26 = coduser: 1,45

idview 27 = coduser: 1

idview 29 = coduser: 30

idview 28 = coduser: 30

 

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

2 respostass a esta questão

Posts Recomendados

  • 0

As duas tabelas não respeitam o princípio da atomicidade, cada tabela deveria guardar apenas um tipo de informação. Ninguém é capaz de dizer qual a diferença do depart_cod da tabela user do depart_cod da tabela regras. O nome disso é ambiguidade, duas tabelas diferentes apresentam informações diferentes, e assim fica difícil fazer o banco de dados funcionar.

Para fazer as tabelas funcionarem no mundo do banco de dados é preciso informar qual a relação que existe entre as tabelas. O que a tabela user tem a ver com a tabela regras? Geralmente a chave primária de uma tabela é a chave de referência em outra tabela, e assim é possível impor a intregridade referencial. 

Sendo assim, não dá para tirar nada dessas tabelas senão informações que você não quer tipo:

 

select idview, coduser  from user, regras where user.depart_cod=regras.depart_cod;
26	1
27	30

select idview, coduser from user, regras where user.cargos_cod=regras.cargos_cod;
28	30
27	30
30	40
30	44

select idview, coduser from user, regras where user.funcoes_cod=regras.funcoes_cod
28	30

No nosso mundo, usuário é uma coisa, regra é outra coisa. O usuário tem nome, documento de identidade e endereço eletrônico. Regra é uma imposição, tipo "só quem tem mais de 18 anos pode ver Netflix". Nesse caso, é possível consultar o banco de dados, verificar o documento de identidade, e listar todos os usuários que nasceram antes de 2004.

No seu caso, apenas uma tabela basta, o user, além do nome, documento de identidade, endereço eletrônico, você pode acrescentar uma credencial, que vai de 1 até 3.

As regras são definidas fora do banco de dados, do tipo PHP
<?php
$idusuario=$_GET['idusuario'];
$mysqli=new mysqli("localhost","root","","astudy");
$query=$mysqli->query("select idusuario, credencial from tbusuario where idusuario=$idusuario");
$credencial=$query->fetch_assoc( )['credencial'];
if($credencial==1){echo "você pode ver Sessão da Tarde";}
if($credencial==2){echo "você pode ver Vale a Pena Ver de Novo";}
if($credencial==3){echo "você pode ver Netflix";}

Editado por Frank K Hosaka
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,4k
×
×
  • Criar Novo...