Autor Tópico: Ajuda com consulta  (Lida 1101 vezes)

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Ajuda com consulta
« Online: Outubro 06, 2010, 12:34:12 am »
Boa noite a todos, eu adquiri o Scriptcase a cerca de 5 dias e gostaria da ajuda de você na contrução de uma consulta, creio que já busquei todas as referência que poderia mais não consegui acertar a consulta, creio que deve ser muito simples para os programadores mais experiêntes.
Bem eu tenho o seguinte cenário:

Estou utilizando o módulo de segurança do scriptcase com grupos habilitados para controlar quem usa o que no sistema e tive a brilhante ideia de apriveitar o módulo para filtrar os registros que podem ser exibidos ao usuário de acordo com o grupo que ele pertence.
Por exemplo tenho uma tabela no banco que armazena as informações de uma vistoria, nela coloquei o campo usuarioLogin e dentro dele salvo juntamente com as demais informações quem fez a vistoria.
Bem quando o usuário loga no sistema eu tenho uma grid que faz uma busca de todas as vistorias em aberto daquele usuário logado e apresento a ele.
A questão é o seguinte, eu gostaria que os usuario cadastrados como administradores tivessem acesso não só as vistorias que estão setadas no banco como sendo deles, mais que eles tivessem acesso
a todas as vistorias cadastradas em aberto, aí o que estou tentando fazer é o seguinte, segue o select:

Código: [Selecionar]
SELECT
   vistorias.idseguradora,
   vistorias.n_sinistro_seg,
   vistorias.nsinistro,
   vistorias.apolice,
   vistorias.idsegurado,
   vistorias.loginUsuarios,
   vistorias.idrisco,
   vistorias.idsegproduto,
   vistorias.statusvistoria,
   vistorias.data_ocorrencia,
   vistorias.data_aviso,
   vistorias.data_solicitacao,
   vistorias.data_contato_segurado,
   vistorias.estimativaprejuizos
FROM
   vistorias INNER JOIN sec_usuarios ON vistorias.loginUsuarios = sec_usuarios.loginUsuarios
WHERE
   (vistorias.loginUsuarios = '[sm_global_login]') OR
   (sec_usuarios.grupousuario = 'Administrator')


Ou seja eu coloquei um campo grupousuario na tabela sec_usuario, eu faço a junção das duas tabelas via INNER JOIN ou seja, o campo loginUusuarios da tabela vistorias tem que coicidir com o campo loginUsuarios da tabela sec_usuarios
e depois eu imponho a condição do meu select, ou seja, trazer os registros se o campo loginUsuarios for igual a variavel de sessão do sistema de segurança ou então o grupo desse usuário for Administrator.

Essa consulta não esta retornando nada como se ela parasse na primeira condição quando ela não é satisfeita.

Conto com voces.

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re: Ajuda com consulta
« Responder #1 Online: Outubro 06, 2010, 09:05:07 pm »
UP..por favor sealguém puder me daruma luz eu agradeço muito... sou novato em php + mysql e não estou conseguindo identificar onde errei.

George Carvalho

  • Expert
  • *****
  • Mensagens: 1371
    • Email
Re: Ajuda com consulta
« Responder #2 Online: Outubro 07, 2010, 06:33:55 am »
Utilize o SQL Builder para montar o select.
George Carvalho
Porto de Galinhas/PE

Diogo Toscano

  • Administrator
  • Expert
  • *****
  • Mensagens: 590
    • :: ScriptCase ::
    • Email
Re: Ajuda com consulta
« Responder #3 Online: Outubro 07, 2010, 10:33:55 am »
se voce fez o join ... no where voce ta juntando vistoria com secusuario ... e testando se o secusuario for administrador ...

imagina:

vistoria   secusuario q cadastrou

1           1


vai trazer a vistoria do cliente, mas apenas se o cadastro de usuario relacionada a ela for administrador ... nao sei se deu pra entender.

melhor, nao sei se eh melhor, voce no login ja levanta a variavel [sm_global_login], indicaria levantar tambem se a pessoa for administrador [sm_global_admin] = 1
e no where voce colocar:
WHERE
   (vistorias.loginUsuarios = '[sm_global_login]') OR  ([sm_global_admin] = 1).

Resumindo ... o seu select esta corrento, mas vai trazer todos os registros do usuario logado ou se foi o ADMINISTRADOR QUE CADASTROU A VISTORIA.

Muda seu sql para o indicado, a variavel tambem ... nao esuqeca de se nao for administrador colocar valor 0 na variavel nova.
Se quizer testar o seu sql original, muda alguma vistoria para administrador e vc vai ver o sql que voce fez.

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re: Ajuda com consulta
« Responder #4 Online: Outubro 08, 2010, 04:39:46 pm »
Caro Diogo Toscano, muito obrigado, voce me ajudou a encontrar a lógica certa, eu estava na verdade condicionando a busca a comparação dos valores no banco..e na verdade a condição seria satisfeita apenas pela comparação de um valor no banco no caso loginUsuarios, as outras condições seriam satifeitas por um valor de sessão independente do valor no banco.
Num sei se vc entendeu mais eu entendi muito bem e agradeço pela dica.