No, esto está bien. Este es solo uno de los raros casos en los que desea utilizar DISTINCT
palabra clave para eliminar duplicados.
En este caso esto se justifica por el hecho de que la lógica de la consulta es correcta, aunque devuelva más de una fila. Muchas veces uno puede ver el uso de DISTINCT
cuando en realidad la lógica de la consulta es incorrecta.
Nota al margen:
- cualquier filtro en una referencia de tabla que esté usando en
WHERE
cláusula que no seaIS NULL/IS NOT NULL
haría cualquierLEFT JOIN
en esta misma referencia de tabla, cambie aINNER JOIN
, en cuanto al comportamiento final del conjunto de resultados. (ver esto:https://stackoverflow.com/a/15483895/1291428 ) -
no deberías usar
GROUP BY
para simular el efecto deDISTINCT
, por 2 razones:1/ Este no es el propósito. Uno de los efectos de
GROUP BY
es eliminar duplicados, pero su objetivo principal es agrupar filas de acuerdo con un determinado conjunto de criterios, para poder aplicarles algunos cálculos/operaciones analíticas.2/
GROUP BY
tambiénORDER BY
los resultados (en mysql), que no es necesariamente lo que desea y en ese caso ralentiza la ejecución. Por favor, solo asegúrese de hacer un uso adecuado de lo que proporcionan los motores, eso siempre es mejor desde el punto de vista de la compatibilidad futura. (anticipando que lo que incluye como concedido en realidad no lo es)
saludos.