Ir para conteúdo

POWERED BY:

Arquivado

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

alvarogtc

Consultar 3 tabelas e retornar resultados.

Recommended Posts

Pessoal gostaria de uma ajuda aqui, eu tenho:

 

tabela -> tabnoticias

Noticia_Id

Noticia_Titulo

Noticia_Descricao

Noticia_Data

 

tabela -> tabeventos

Evento_Id

Evento_Nome

Evento_Local

Evento_Data

 

tabela -> tabentrevistas

Entrevista_Id

Entrevista_Titulo

Entrevista_Descricao

Entrevista_Data

 

Oque quero é fazer uma busca por uma palavra chave

 

que busque em Noticia_Nome, Noticia_Descricao - Evento_Nome, Evento_Local - Entrevista_Titulo, Entrevista_Descricao

 

e Ordene pela Data

 

No caso eu preciso do ID para poder gerar os links

 

 

Ideias que encontrei na net mas nao fui capaz de fazer funcionar..

 

entre 2 tabelas

<?php 
// tentei formar uma query nesse sentido e não consegui.
$sql ="Select * From tabnoticias UNION Select * From tabeventos";

//fiz assim mas sai um monte de resultado repetido

$Sql09= "SELECT * FROM tabnoticias, tabeventos, tabentrevistas 
WHERE tabnoticias.Noticia_Nome LIKE '%$palavra%'OR tabeventos.Evento_Nome LIKE '%palavra%'
OR tabentrevistas.Entrevista_Nome LIKE '%$palavra%' 
ORDER BY tabnoticias.Noticia_Data, tabeventos.Evento_Data, tabentrevistas.Entrevista_Data DESC";

//fiz assim tambem mas repete milhoes de resultados

$Sql09 = "SELECT n.Noticia_Id, n.Noticia_Nome, n.Noticia_Descricao, n.Noticia_Data, 
e.Evento_Id, e.Evento_Nome, e.Evento_Local, e.Evento_Data, t.Entrevista_Id, t.Entrevista_Nome, 
t.Entrevista_Descricao, t.Entrevista_Data FROM tabnoticias AS n, 
tabeventos AS e, tabentrevistas AS t WHERE n.Noticia_Nome LIKE '%$palavra%' 
OR n.Noticia_Descricao LIKE '%$palavra%' OR e.Evento_Nome LIKE '%$palavra%' 
OR e.Evento_Local LIKE '%$palavra%' OR t.Entrevista_Nome LIKE '%$palavra%'
OR t.Entrevista_Descricao LIKE '%$palavra%' ORDER BY n.Noticia_Data, e.Evento_Data, t.Entrevista_Data";

 

Tudo que fiz ai acima fui buscando na net e testando.

 

Alguem tem alguma dica, ideia, ou ponto de partida pra me passar???

Compartilhar este post


Link para o post
Compartilhar em outros sites

As tabelas se relacionam ?

 

Se sim , pesquise por JOIN

Se não pesquise por UNION

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro no seu union ocorreu pois, o nome e o tipo das colunas devem ser iguais.

 

Esse cara retorna o ID e um campo "Tipo" que indica se é uma entrevista, noticia, ou evento

 

 

select 
'Noticia' as Tipo ,
Noticia_Id as ID
from 
tabnoticia
where 
Noticia_Titulo like '%$palavra%' or Noticia_Descricao like '%$palavra%'

union all

select 
'Evento' as Tipo ,
Evento_Id as ID
from 
tabevento
where 
Evento_Nome like '%$palavra%' or Evento_Local like '%$palavra%'

union all

select 
'Entrevista' as Tipo ,
Entrevista_Id as ID
from 
tabentervista
where 
Entrevista_Titulo like '%$palavra%' or Entrevista_Descricao like '%$palavra%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui aqui, vlw pela dica!!!!

 

so para ficar claro caso alguem tenha o mesmo problema, segui o exemplo acima

 

define Noticia_Titulo, Evento_Titulo, Entrevista_Titulo as TITULO e ficou assim de maneira provisoria

 

echo TIPO (exibe se é noticia, evento ou Entrevista)

echo ID (o id de cada resultado)

echo TITULO (exibe o titulo se noticia, evento ou entrevista)

 

Na minha conclusao, é que como as tabelas tem colunas diferentes eu tinha que digamos simular um campo que fosse comum para ambas as 3

 

no caso foi TIPO, ID e TITULO..

 

Obrigada.

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.