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
WHEREclause autre queIS NULL/IS NOT NULLferait n'importe quelLEFT JOINsur 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 BYpour simuler l'effet deDISTINCT, pour 2 raisons :1/ Ce n'est pas le but. Un des effets de
GROUP BYest 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 BYles 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.