Ir para conteúdo

POWERED BY:

Arquivado

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

Detonador PHP

[Resolvido] É possível pesquisar em 2 tabelas não relacionadas?

Recommended Posts

Ola pessoal, o problema é o seguinte:

Tenho duas tabelas:

Institucional e Notícias.

Elas NÃO SÃO RELACIONADAS ENTRE SI.

As duas tem campos título e texto.

 

Meu objetivo é realizar uma busca, onde esta busca pegue a palavra e busque tanto no título quanto no texto das duas, e me retornar o resultado nas duas tabelas, para que eu possa fazer uma paginação.

 

Eu fiz assim no início:

 

SELECT noticia.*, institucional.* FROM noticia, institucional WHERE noticia.titulo LIKE '%$palavra%' OR noticia.texto LIKE '%$palavra%' OR institucional.titulo LIKE '%$palavra%'  OR institucional.texto LIKE '%$palavra%'

O que acontece que ele mostra mais de 60 registros quando ao inserir a palavra TESTE deveria mostrar apenas 6 registros, pois tem 4 notícias com a palavra teste e 2 institucionais com a palavra teste.

 

E outra coisa, como faço para mostrar o título e o id delas uma vez que são com o mesmo nome?

Aguardo retorno pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use UNION:

 

Suponhamos que:

 

- tabela "noticias" você tenha as colunas: codigo, titulo e noticia

- tabela "institucional" você tenha as colunas: id, titulo e descricao

 

(SELECT
	codigo,
	titulo
FROM
	noticias
WHERE
	titulo LIKE '%$palavra%' OR
	noticia LIKE '%$palavra%')
UNION
(SELECT
	id AS codigo,
	titulo
FROM
	institucional
WHERE
	titulo LIKE '%$palavra%' OR
	descricao LIKE '%$palavra%')
LIMIT 10

Caso você queira trazer tudo das duas tabelas, retire o LIMIT.

Para trazer somente X registros de cada tabela você pode usar o limit em cada query (dentro dos parenteses).

 

Documentação completa: http://dev.mysql.com/doc/refman/5.0/en/union.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show de bola!

Na mosca!

Valew celso pela ajuda!

 

Eu resolvi da seguinte forma:

 

$resultado = mysql_query("SELECT id, titulo FROM noticia WHERE titulo LIKE '%$palavra%' OR texto LIKE '%$palavra%' UNION SELECT id, nome AS titulo FROM institucional WHERE nome LIKE '%$palavra%' OR texto LIKE '%$palavra%'");
while($res = mysql_fetch_array($resultado)){

	echo "[".$res[id]."] ".$res[titulo]."<br>";

}

Só gostaria de saber agora como eu coloco este post como resolvido!

hehehe...

Me ensinem como fazer, e não façam por mim como da última vez, pois colocaram pra mim como resolvido, e no fim acabei não aprendendo como se faz!

Grande abraço a todos!

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.