Tengo una relación de tabla de muchos a muchos en MySQL que involucra tres tablas: tickets
, ticket_solutions
y solutions
. (. Un billete puede tener múltiples soluciones, y las soluciones se aplican a múltiples entradas)Usando la combinación externa izquierda para la relación de muchos a muchos donde se permite nulo
Aquí están las estructuras de la tabla, simplificadas:
tickets ticket_solutions solutions
----- ----- -----
id ticket_id id
solution_id solution
(En este ejemplo, todos los campos son INT
excepto solutions.solution
que es VARCHAR
.) Como algunos tickets no están completos, es posible que no tengan ninguna solución.
He escrito la siguiente consulta:
SELECT t.id, GROUP_CONCAT(DISTINCT sol.solution SEPARATOR ', ') solutions
FROM tickets t
LEFT JOIN ticket_solutions tsol ON (tsol.ticket_id = t.id)
LEFT JOIN solutions sol ON (tsol.solution_id = sol.id)
GROUP BY t.id DESC;
Mi pregunta se encuentra con el segundo LEFT JOIN
. En cualquier situación donde exista una entrada en la tabla de vinculador (ticket_solutions
) para un ticket dado, habrá siempre sea un registro para que coincida con solutions
. Sin embargo, si trato de usar un INNER JOIN
, ya no recibo tickets que no tienen solución.
En mi opinión, la única vez que se producirán NULL
valores será en la relación entre tickets
y la tabla del enlazador. (Boleto sin soluciones todavía.)
¿Debo usar un LEFT JOIN
entre la tabla de vinculador y solutions
aunque no haya valores de NULL
en esa relación en particular?
En caso negativo, ¿cuál es la estructura de consulta recomendada?
Esto es exactamente lo que estaba buscando. Gracias. – JYelton