maicon_m 0 Denunciar post Postado Maio 10, 2012 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
Prog 183 Denunciar post Postado Maio 10, 2012 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
maicon_m 0 Denunciar post Postado Maio 10, 2012 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
Prog 183 Denunciar post Postado Maio 10, 2012 Como disse, o exemplo é sem conhecimento sobre o modelo físico, você deve adaptar para o seu. Compartilhar este post Link para o post Compartilhar em outros sites
maicon_m 0 Denunciar post Postado Maio 11, 2012 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
Prog 183 Denunciar post Postado Maio 11, 2012 Mostre como ficou o select e o resultado. Tente usar UNION ALL no lugar de UNION. Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Maio 11, 2012 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