SQL ordenando resultados según coincidencia en tablas

n1x3r

Buenas tardes, otra vez mas os pido consejo ya que no se muy bien como hacerlo de forma que sea lo más eficiente posible.

Tenemos 2 tablas

Tabla_títulos [ID, TITULO]
Tabla_descripciones[ID, DESCRIPCION]

Necesito hacer una búsqueda que pueda buscar en las dos tablas PERO que los resultados se ordenen, mostrando los de la tabla titulo antes que los de la tabla descripciones sin duplicarse.

Pongamos un ejemplo

Tabla_titulos
[230, "Tarta de manzana"]
[231, "Tarta de leche y chocolate"]

Tabla_descripciones
[230, "Huelvos, leche, manzana"]
[231, "Huelvos, leche, cacao"]

Cuando alguien busque "leche" tiene que mostrarse los dos resultados, siendo el primero el que contiene leche en el título y los secundarios lo que lo muestran en la descripción.

Un cordial saludo y infinitas gracias por vuestra respuesta de antemano!

Merkury

#1 Pues haces dos queries una a cada tabla y a correr y en el front end lo muestras ordenado.

eXtreM3

Por qué 2 consultas? Hazlo en 1 y creas una tabla. Por cada registro vas pintando un tr , los títulos los pones en un td a la izquierda y la descripción en un td a la derecha.

Si lo quieres arriba y abajo es cuestión de maquetar un poco diferente, pero al fin y al cabo parecido.

n1x3r

Me interesaría hacer 1 consulta y que salgan ordenados, ya que el frontend tiene mucho código, si lo puedo controlar en la consulta mejor que mejor.

Las 2 consultas ya lo tenia pensado, pero no quiero sobrecargar mas la DB :D

KaBeZiLLa

algo así creo que te serviría:

SELECT Titulos.Id, Titulo, Descripcion
FROM Titulos
INNER JOIN Descripciones 
	ON Titulos.ID = Descripciones.ID
WHERE Titulo like '%cadena_buscada%'
	OR descripcion like '%cadena_buscada%'
ORDER BY CASE WHEN Titulo like '%cadena_buscada%' THEN 0 ELSE 1 END ASC

Es SqlServer.

1 1 respuesta
n1x3r

#5 Eres un crack funciona a la perfección! Muchísimas gracias. ;)

Usuarios habituales

  • n1x3r
  • KaBeZiLLa
  • eXtreM3
  • Merkury