Jump to content


Guilherme Luiz

Member Since 28/02/2007
Offline Last Active 27/02/2023, 13:04
-----

#1031983 Ajuda na logica de pesquisa relacionada mysql

Posted by Guilherme Luiz on 10/10/2016, 23:35

Olá pessoal,

Sei que tem diversos artigos que explicam como fazer consultas relacionadas numa única query, porem estou com dúvida na lógica da minha consulta... vamos lá.

Tenho um sistema onde existe um nível de acesso.

1 - Master
2 - Whitelabel
3 - Admin
4 - Subuser
5 - Afiliado

De acordo com este nível de acesso, quero criar um sistema da log de movimentação de saldo.
Seguindo essa ordem eu tenho a seguinte lógica:

O nível 1 visualiza toda a movimentação de todos os níveis, incluindo do próprio nível
O nível 2 visualiza tudo do nível 3, incluindo o próprio nível
O nível 3 visualiza tudo do nível 4, incluindo o próprio nível
O nível 4 visualiza somente sua movimentação.

Baseado nisso em minha tabela de log (que se chama saldo_log) eu terei uma coluna chamada de chave_especial_user para identificar de quem é aquele log.

Até aí tenho tudo ok pois consigo fazer com que cada um consiga visualizar o seu log.

Numa tabela chamada user_details eu tenho a coluna chave_especial_user para identificar de qual usuário são os detalhes cadastrados e também possuo uma coluna chamada chave_subuser que terá nela a chave_especial_user do usuário "chefe"

Por exemplo
Usuário com login nível 3 terá sua identificação na chave_especial_user e em chave_subuser terá a chave_especial_user de algum usuário nível 2

Portanto a relação da pesquisa, isso levando em consideração que eu seria um usuário nível 2 eu teria, talvez, a seguinte lógica de pesquisa:

Através da minha chave_especial_user (que está salva numa session) vou realizar uma pesquisa na tabela user_detail na coluna chave_subuser para puxar quais usuários possuem a minha chave_especial_user vinculada.

Tendo este resultado, ainda na tabela user_detail eu puxo a chave_especial_user destes meus sub-usuários para então consultar a tabela saldo_log através da coluna chave_especial_user.

E no resultado desta pesquisa, além de sair os meus logs, também terá que sair o log destes meus sub-usuarios numa única pesquisa.

É possível aplicar essa lógica numa única query com o INNER JOIN ou alguma outra técnica?
Não queria fazer do modo "tradicional" realizando uma pesquisa e a partir desta pesquisa, fazer outra pesquisa dentro do meu while... isso num determinado momento vai comer todo o processamento do meu BD.


IPB Skin By Virteq