Jump to content
Fórum Script Brasil
  • 0

Pesquisa apenas quando valor relacionado > 0


Suporte HSL

Question

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

 

Edited by Suporte HSL
Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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";}

Edited by Frank K Hosaka
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.9k
×
×
  • Create New...