Eine andere Option könnte array_remove(..., NULL)
sein (eingeführt in 9.3
). ) wenn tags.tag
ist NOT NULL
(Andernfalls möchten Sie vielleicht NULL
beibehalten Werte im Array, aber in diesem Fall können Sie nicht zwischen einem einzelnen vorhandenen NULL
unterscheiden -Tag und ein NULL
-Tag aufgrund des 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
Wenn keine Tags gefunden werden, wird ein leeres Array zurückgegeben.