Quelqu'un at-il une idée de la façon de réécrire la requête SQL suivante pour générer des résultats, qui ne contiendrait qu'une seule occurrence de nom? (résultats regroupés par utilisateur).
La requête
SELECT array_to_string(array_agg(CONCAT(u.firstname, ' ', u.lastname)), ', ')
FROM log_has_item logitem
INNER JOIN log log ON log.id = logitem.log_id
INNER JOIN worker u ON log.worker_id = u.id
WHERE logitem.company_id = 1
La requête exécutable est disponible sur sqlfiddle.com. Cliquez sur le bouton Exécuter SQL et vous obtiendrez, qui contient Frantisek Smith deux fois
Vous pouvez utiliser le mot clé distinct
dans array_agg
:
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT CONCAT(u.firstname, ' ', u.lastname)), ', ')
FROM log_has_item logitem
INNER JOIN log log ON log.id = logitem.log_id
INNER JOIN worker u ON log.worker_id = u.id
WHERE logitem.company_id = 1