Saltar al contenido

MySQL: GROUP_CONCAT con LEFT JOIN

Nuestro grupo especializado pasados ciertos días de trabajo y de recopilar de datos, dimos con la solución, deseamos que todo este artículo sea de utilidad para tu plan.

Solución:

Usar:

   SELECT t.*,
          x.combinedsolutions
     FROM TICKETS t
LEFT JOIN (SELECT s.ticket_id,
                  GROUP_CONCAT(s.soution) AS combinedsolutions
             FROM SOLUTIONS s 
         GROUP BY s.ticket_id) x ON x.ticket_id = t.ticket_id

Alterno:

   SELECT t.*,
          (SELECT GROUP_CONCAT(s.soution)
             FROM SOLUTIONS s 
            WHERE s.ticket_id = t.ticket_id) AS combinedsolutions
     FROM TICKETS t

Solo necesita agregar un GROUP_BY:

SELECT Tickets.*, GROUP_CONCAT(Solutions.solution) AS CombinedSolutions FROM Tickets 
LEFT JOIN Solutions ON Tickets.id = Solutions.ticket_id 
GROUP_BY Tickets.id 
ORDER BY Tickets.id;

Creo que el comentario de @Dylan Valade es la respuesta más simple, así que lo publico como otra respuesta: simplemente agregar un GRUPO POR Tickets.id al SELECT del OP debería solucionar el problema. Solucionó mi propio problema.

Sin embargo, para las bases de datos que no son pequeñas, la respuesta aceptada, especialmente si hay predicados en Tickets.id, parece no implicar un escaneo total de la tabla y, por lo tanto, aunque el párrafo anterior arroja los resultados correctos, parece ser mucho menos eficiente en mi caso. .

Puedes añadir valor a nuestro contenido informacional asistiendo con tu experiencia en las reseñas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *