Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

maicon_m

Query seleciona tudo

Recommended Posts

Estou encontrando tremenda dificuldade em formar uma query que selecione o valor de uma coluna em diversas tabelas. Tenho a coluna 'resolucao' e cinco tabelas onde existe essa coluna também. Quero pesquisar em todas as tabelas se aparece determinado termo na coluna 'resolucao'.

 

O código que formei até o momente é o seguinte:

 


$busca = mysql_query("SELECT portaria.*, comunicado.*, ordem_servico.*, resolucao.*  
  FROM (portaria LEFT JOIN comunicado LEFT JOIN ordem_servico LEFT JOIN resolucao) 
  WHERE portaria.assunto = '$termo' OR comunicado.assunto = '$termo' OR orderm_servico.assunto = '$termo' OR resolucao.assunto='$termo' LIMIT 30 ") or die(mysql_error());		


Compartilhar este post


Link para o post
Compartilhar em outros sites

O conteúdo de todas as tabelas são similares, você precisa mostrar todas as colunas sempre?

 

Eu faria assim, numa situação para um modelo que eu não conheço:

(SELECT portaria_id, 'portaria' as tipo, assunto, data
FROM portaria WHERE assunto = '$termo')
UNION
(SELECT comunicado_id, 'comunicado' as tipo, assunto, data
FROM comunicado  WHERE assunto = '$termo')
UNION
(SELECT ordem_servico_id, 'ordem_servico' as tipo, assunto, data
FROM ordem_servico  WHERE assunto = '$termo')
UNION
(SELECT resolucao_id, 'resolucao' as tipo, assunto, data
FROM resolucao  WHERE assunto = '$termo')
ORDER BY data DESC LIMIT 30

 

Tenta ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prog não consegui entender o porque do 'AS' e quais colunas são selecionadas.

 

As tabelas compartinham colunas como numero, assunto, documento...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta Prog, consegui progredir. Agora surgiu outra dúvida: ao pesquisar em várias tabelas ele multiplica os resultados mostrados. Por exemplo o mesmo título é mostrado tanto quanto forem os números de tabelas pesquisadas. Tentei um GROUP BY contudo não deu muito certo. Você tem alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se portaria, comunicado, ordem_servico, resolucao tiverem uma qtde diferente de colunas as tabelas nao sao empilhaveis através do UNION/UNION ALL sem uma modificaçao em suas estruturas, a nao ser q ocorro uma martelada brava envolvendo information_schema e concats em conjuncao com like.

 

Mas se todas possuem titulo e resolucao:

select 'PORTARIA' tabela, titulo, resolucao  where resolucao = '$termo'
UNION ALL
select 'COMUNICADO' tabela, titulo, resolucao  where resolucao = '$termo'
UNION ALL
select 'ORDEM_SERVICO' tabela, titulo, resolucao  where resolucao = '$termo'
UNION ALL
select 'RESOLUCAO' tabela, titulo, resolucao  where resolucao = '$termo'

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.