Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/11/2015, 04:09
harryp
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 16 años
Puntos: 8
Fusionar varias consultas en una

Hola foreros! Hace tiempo que no paso por aquí.. todo bien? Al lio...

Bueno pues el caso es que tengo dos tablas relacionadas entre si, y el caso es quiero obtener unos datos y los obtengo, pero me gustaría agilizar el proceso en una sola consulta,ahora a ver si algún experto en Sql me pudiese echar un cable...

A ver vamos por partes, simplifico las tablas para ilustrar el ejemplo.

Primera tabla : textos

(#texto_id,texto_nombre,texto_tipo)

Segunda tabla: relaciones

(#relacion_id,relacion_texto_categoria, relación_texto_descendiente)

Funcionan de la siguiente forma, en la primera tabla almaceno una serie de textos, que pueden ser de diferentes tipos, para llenar las tablas usaremos los siguientes datos :

Primera tabla :

(1,"noticia 1"," noticias")
(2,"noticia 2","noticias")
(3,"primer tag","tags")
(4,"segundo tag", tags)

Segunda tabla :

(1,1,3)
(1,1,4)

De este modo, una noticia puede tener N tags.

Bíen llegado a este punto, creo que se entiende que, almaceno los valores en la primera tabla, y luego ago una relación en la segunda, pudiendo usar la segunda tabla en infinidad de usos.

El caso es que, siguiendo el ejemplo anterior, lo que pretendo es crear un buscador de "tags" de noticias, que el usuario ingrese parte de un tag, y se le muestre las noticias que contengan los tags que contengan el texto ingresado.

Por ejemplo , si introduzco "prime", la respuesta tendría que ser noticia 1.

Y bueno para hacer esto, lo consigo mediante varias consultas,

primero busco en la tabla1 coincidencias con texto_nombre con la string ingresada,

luego, por cada "tag" encontrada, busco en la tabla relaciones coincidencias con este id, en el campo relacion_texto_descendiente, ya que los tags son descendientes de las noticias,

Una vez tengo los id de las noticias ( con un inner join compruebo que tengan en el campo texto_tipo="noticias", por que tengo otro tipo de textos que no son noticias ), simplemente obtengo los datos de la tabla textos con los id de noticias que he obtenido.


Pues, el caso es que son 3 consultas, y entiendo que se tiene que poder hacer con una, mezclando subconsultas, pero mis conocimientos no llegan a tanto...

Gracias por leer el post, y por la ayuda que me puedas prestar de antemano.
Un saludo.