Další možností může být array_remove(..., NULL)
(představeno v 9.3
), pokud tags.tag
je NOT NULL
(jinak možná budete chtít ponechat NULL
hodnoty v poli, ale v takovém případě nemůžete rozlišit mezi jedním existujícím NULL
tag a NULL
tag kvůli LEFT JOIN
):
SELECT objects.*,
array_remove(array_agg(tags.tag), NULL) AS tags,
FROM objects
LEFT JOIN taggings ON objects.id = taggings.object_id
LEFT JOIN tags ON tags.id = taggings.tag_id
Pokud nejsou nalezeny žádné značky, vrátí se prázdné pole.