Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta con Group Concat

Estas en el tema de Consulta con Group Concat en el foro de PHP en Foros del Web. Buenos días. Llevo días buscando y no encuentro la solución a un pequeño problema que tengo con un buscador que estoy haciendo. Tengo la siguiente ...
  #1 (permalink)  
Antiguo 07/04/2016, 02:27
 
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 8
Antigüedad: 11 años, 2 meses
Puntos: 0
Consulta con Group Concat

Buenos días. Llevo días buscando y no encuentro la solución a un pequeño problema que tengo con un buscador que estoy haciendo. Tengo la siguiente consulta:

SELECT
articulos.id as artid,
articulos.titulo as titulo,
articulos.texto as texto,
GROUP_CONCAT(DISTINCT autors.nombre SEPARATOR ', ') as autores

FROM articulos
LEFT JOIN articulos_autors ON (articulos.id=articulos_autors.articulo_id)
INNER JOIN autors ON (articulos_autors.autor_id=autors.id)

WHERE articulos.titulo LIKE '%$busqueda%'
OR articulos.texto LIKE '%$busqueda%'
OR autors.nombre LIKE '%$busqueda%'
GROUP BY articulos.id
;

Como veis, tengo una tabla articulos, una tabla autors y una tabla articulos_autors que las relaciona. Un mismo artículo puede tener varios autores.
La búsqueda funciona bien y los resultados son correctos. El problema lo tengo al buscar por el nombre de un autor. Quisiera que al listar los resultados me muestre todos los autores del artículo encontrado. Con esta consulta solo me aparece el autor buscado, los otros autores asociados al mismo artículo no salen.
¿Podría alguien echarme una mano para saber cómo debería hacer la consulta?

¡Gracias!
  #2 (permalink)  
Antiguo 07/04/2016, 03:39
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Consulta con Group Concat

Plantéate la consulta en dos fases: 1) Obtener de qué cosas quieres información, 2) Obtener toda la información que necesitas de esas cosas.
Esto normalmente se puede implementar como una subquery de filtrado, usada por una query de detalle.
En tu caso, no te funciona porque estás filtrando en la query de detalle.En el WHERE estás diciendo que, si el join devuelve 10 filas para un mismo libro, porque tiene 10 autores, sólo se quede con la fila que contiene el autor buscado, y luego agrupe.Obviamente, los otros 9 autores no estarán en la salida.
  #3 (permalink)  
Antiguo 08/04/2016, 01:14
 
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 8
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Consulta con Group Concat

Gracias, dashtrash! Me has orientado en la dirección correcta. Lo he resuelto por fin haciendo la subquery en el FROM.
Doy el tema por solucionado. ¡Gracias!

Etiquetas: concat, group, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:00.