Ir para conteúdo

Arquivado

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

ohlele

Consulta em várias tabelas

Recommended Posts

Olá pessoal estou com uma dúvida e nos materiais que encontrei na net não funcionou.

 

Tabelas de exemplo:

casa

carro

produto

 

Campos iguais:

nome

descricao

 

 

Eu quero fazer uma busca com uma ou mais palavras qualquer dos dois campos e nas tres ou mais tabelas existentes ao mesmo tempo.

 

Exemplo, buscar dvd em:

casa nome e casa descricao

carro nome e carro descricao

produto nome e produto descricao

 

 

E mostrar só o que ele encontrar realmente.

 

Entenderam.

 

Valeu galera

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta é essa a consulta:

 

 

SELECT * FROM produtos WHERE nome LIKE '%busca%'
UNION
SELECT * FROM casa WHERE nome LIKE '%busca%'
Seria isso, assim funciona para duas tabelas, só que eu quero que funcione para 3,4 ou mais tabelas ao mesmo tempo.
Obrigado


Já tentei assim também mas não funciona, a consulta traz um monte de resultados:

 

 

SELECT
p.nome, p.descricao,
a.nome, a.descricao
FROM produtos p, artigos a
WHERE
p.nome LIKE '%busca%' OR
p.descricao LIKE '%busca%' OR
a.nome LIKE '%".$q."%'
Assim retorna um monte de resultados que não precisam.
Tem como melhorar?
Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

+ um union

 

SELECT * FROM produtos WHERE nome LIKE '%busca%' 
UNION
SELECT * FROM casa WHERE nome LIKE '%busca%'
UNION
SELECT * FROM xpto WHERE nome LIKE '%busca%'

lembre que as colunas do union tem de ter a mesma quantidade e tipo

 

uma solução seria montar a query dinamicamente para todas as tabelas que tem uma coluna com determinado nome , não é simples mas é possível e creio que existam exemplos na Web.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lembre que as colunas do union tem de ter a mesma quantidade e tipo

 

 

SELECT nome  FROM produtos WHERE nome LIKE '%busca%'  
UNION 
SELECT nome  FROM casa WHERE nome LIKE '%busca%' 
UNION 
SELECT nome  FROM xpto WHERE nome LIKE '%busca%

 

'

 




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim?

 

Pois se eu consulto só com duas tabelas funciona, essa duas tabelas tem campos diferentes.

Mas se eu adiciono a terceira ai não funciona.

 

Que tipos são esses?

 

Ex: se tiver varchar em uma tem que ter na outra?

Se tiver text em uma tem que ter na outra?

Não importa a quantidade de campos e sim o tipo?

 

Seria isso mesmo?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois se eu consulto só com duas tabelas funciona, essa duas tabelas tem campos diferentes.

 

Campos diferentes mas no mesmo número e tipo senão não roda.

 

Dá uma lida no manual para mais detalhes.

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.