Comment faire pour supprimer les doublons, qui sont générés avec array_agg postgres fonction

Quelqu'un at-il une idée de comment la réécriture de requête SQL suivante pour générer des résultats, qui seraient contient une seule occurrence du nom? (les résultats groupés par l'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

Exécutable de requête est disponible sur sqlfiddle.com.
Cliquez sur Exécuter SQL bouton et vous aurez raison, qui contient Frantisek Smith deux fois

array_agg(distinct concat(...)))
Dans postgre 9.0+, il est string_agg(text,text) fonction. Il peut être plus facile à écrire string_agg(CONCAT(...),', ')
distinctes fonctionne très bien, mais brouille l'ordre. Une manière de préserver?
utiliser un order by à l'intérieur de string_agg()
J'ai essayé string_agg(distinct nome commande par l'.id,', ') et string_agg(distinct nome commande par nome,', '), mais à la fois donner une "fonction string_agg(character varying) n'existe pas". Je vais vous poser une question, avec la pleine sql pour vous montrer.

OriginalL'auteur Peter Jurkovic | 2014-10-14