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

Ajuda Para Montar Um Select


Leonardo  Bueno

Pergunta

Pessoal bom dia a todos.....

Estou com uns problinhas aqui com a nossa intranet na empresa e gostaria que alguém me ajudasse.

É o seguinte.

Tenho uma tabela de funcionários na qual tem um campo setor que é campo INT (código do setor), depois tenho uma outra tabela setores com um campo ID e outro setor ( que é o nome do setor).

Bom preciso realizar uma consulta que me informe os dados dos funcionários e no campo setor o nome do setor (não código) até aí tudo bem montei o seguinte código que aparentemente resolveu o meu problema.

'SELECT f.id, f.nome, s.setor, f.data_admissao, f.data_nascimento, f.ramal, f.email FROM `funcionarios` as f, `setores` as s where f.setor = s.id and f.status = 1 and f.nome like "%'.$_POST[busca].'%" ORDER BY f.nome';
Porem preciso que a busca seja realizada não somente pelo nome do funcionário mas tambem pelo ramal e ID (matricula) para isso incrementei o código acima da seguinte forma.
'SELECT f.id, f.nome, s.setor, f.data_admissao, f.data_nascimento, f.ramal, f.email FROM `funcionarios` as f, `setores` as s where f.setor = s.id and f.status = 1 and f.nome like "%'.$_POST[busca].'%" or f.id like "%'.$_POST[busca].'%" or f.ramal like "%'.$_POST[busca].'%" ORDER BY f.nome';
Só que desta forma ele só realiza a busca corretamente quando passo o Nome, se informo uma matricula por exemplo ele me retorna o funcionário porem o repete para todos os setores cadastrados na tabela setores, quando o correto seria aparecer apenas uma vez com o setor correspondente. Já alterei o SELECT acima para o que esta logo abaixo porem desta forma ele não me retorna nada quando busco pela matricula.
'SELECT f.id, f.nome, s.setor, f.data_admissao, f.data_nascimento, f.ramal, f.email FROM `funcionarios` as f, `setores` as s where f.setor = s.id and f.status = 1 and f.nome like "%'.$_POST[busca].'%" or f.id like "$_POST[busca]" ORDER BY f.nome';

Bom acho que era isso, tentei ser o mais claro e objetivo possível, se alguém puder me ajudar ficarei grato.

Atenciosamente,

Leonardo Bueno

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Que tal dar uma organizada?

select f.id, f.nome, s.setor, f.data_admissao, f.data_nascimento, f.ramal, f.email
from `acme`.`funcionarios` f
inner join `acme`.`setores` s 
  on (f.setor = s.id)
where (f.status=1)
  and (f.nome like "%FRAJOLA%" 
       or
       f.id like "%WARNER%")
order by f.nome;

* em tempo... não é bom usar "where" em troca de "inner"...

* em tempo 2... é bom organizar as comparações com parênteses, principalmente quando você usa and e or juntos...

Ok?

Espero ter ajudado...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...