Como buscar em 2 tabelas iguais no MySQL de maneira conjunta

  • Autor Autor mafragoto
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
M

mafragoto

Gamma
SEO
Hola betas, tengo un problema con mi codigo, y ya me estoy haciendo bolas buscando en san google.

Tengo 2 tablas exactamente iguales: tabla1 y tabla2 necesito realizar articulos relacionados, y actualmente solo estoy trabajando con tabla1 con la siguiente query.

Inserir CODE, HTML ou PHP:
select SQL_CALC_FOUND_ROWS
									tabla1.slug as slugpost,
									tabla1.titulo,
									tabla1.id,
									tabla1.id_usu,
									tabla1.id_cat,
									tabla1.slug,
									tabla1.fecha,
									tabla1.html,
									tabla1.hit,
									tabla1.etiquetas,
									tabla1.status as poststatus,
									categorias.nombre,
									categorias.slug as slugcategoria,
									categorias.icon,
									usuarios.id as idusuarios,
									usuarios.usuario
								    from tabla1
								    	LEFT JOIN usuarios
								    		on	tabla1.id_usu = usuarios.id
								        LEFT JOIN categorias on categorias.id=tabla1.id_cat
									WHERE
										MATCH(titulo, etiquetas, html) AGAINST ('".$query."')
		 								limit 1,5;

La query funciona perfecto, pero como veran solo busca en la tabla1 me gustaria que arroje los resultados y busque tanto en la tabla 1 como en la tabla 2

Tabla1 guarda los posts antiguos de mi sitio(desde el post 0 al 127000), y tabla2 es la tabla nueva para los nuevos post(desde el post 127001 en adelante). los resultados deberían salir ordenados por id y no tengo la mas minima iea de como adaptarlo. alguna sugerencia betas?
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Puedes utilizar la función UNION, que une los resultados de ambas tablas sin duplicar resultados.
 
Puedes utilizar la función UNION, que une los resultados de ambas tablas sin duplicar resultados.

Si, la respuesta es usar UNION, y creeme que si lo intente, pero realmente no entiendo muy bien como usar UNION y es por eso que me hacia tantas bolas, intente de varios modos y maneras, hasta busque en stackoverflow, pero no me funciono nada, pense que quiza me pudieran ayudar con la query.

he intentado lo siguiente:

Inserir CODE, HTML ou PHP:
SELECT SQL_CALC_FOUND_ROWS
                    t.slug as slugpost,
                    t.titulo,
                    t.id,
                    t.id_usu,
                    t.id_cat,
                    t.fecha,
                    t.html,
                    t.hit,
                    t.etiquetas,
                    t.status as table1tatus,
                    categorias.nombre,
                    categorias.slug as slugcategoria,
                    categorias.icon,
                    usuarios.id as idusuarios,
                    usuarios.usuario
FROM
(
SELECT table1.slug,table1.titulo,table1.id,table1.id_usu,table1.id_cat,table1.fecha,table1.html,table1.hit,table1.etiquetas,table1.status FROM table1
UNION
SELECT table2.slug,table2.titulo,table2.id,table2.id_usu,table2.id_cat,table2.fecha,table2.html,table2.hit,table2.etiquetas,table2.status FROM table2
) t
 LEFT JOIN usuarios on t.id_usu = usuarios.id
 LEFT JOIN categorias on categorias.id=t.id_cat
 WHERE
   MATCH(titulo, etiquetas, html) AGAINST ('dvdrip latino')
   limit 1,5;

pero me manda un error: Can't find FULLTEXT index matching the column list

Tambien ya he corrido el siguiente comando
Inserir CODE, HTML ou PHP:
ALTER TABLE `table1` ADD FULLTEXT INDEX `test` (`titulo`, `etiquetas`, `html`); 
ALTER TABLE `table1` ADD FULLTEXT INDEX `test2` (`titulo`, `etiquetas`, `html`);
 
Última edição:
Voltar
Topo