Non, c'est bien. Ce n'est qu'un des rares cas où vous souhaitez utiliser le DISTINCT
mot clé pour supprimer les doublons.
Dans ce cas cela se justifie par le fait que la logique de la requête est correcte, même si elle retourne plus d'une ligne. Plusieurs fois, on peut voir l'utilisation de DISTINCT
alors que la logique de la requête est erronée.
Remarque :
- tout filtre sur une référence de table que vous utilisez dans
WHERE
clause autre queIS NULL/IS NOT NULL
ferait n'importe quelLEFT JOIN
sur cette même référence de table tournez vers unINNER JOIN
, comme pour le comportement du jeu de résultats final. (voir ceci :https://stackoverflow.com/a/15483895/1291428 ) -
vous ne devez pas utiliser
GROUP BY
pour simuler l'effet deDISTINCT
, pour 2 raisons :1/ Ce n'est pas le but. Un des effets de
GROUP BY
est d'éliminer les doublons, mais son objectif principal est de regrouper les lignes selon un certain ensemble de critères, afin de leur appliquer des calculs/opérations analytiques.2/
GROUP BY
égalementORDER BY
les résultats (en mysql), ce qui n'est pas forcément ce que l'on veut et dans ce cas ralentit l'exécution. S'il vous plaît, assurez-vous simplement d'utiliser correctement ce que les moteurs fournissent, c'est toujours mieux du point de vue de la compatibilité ascendante. (en anticipant que ce que vous incluez comme accordé ne l'est en fait pas)
cordialement.