En anden mulighed kan være array_remove(..., NULL)
(introduceret i 9.3
) hvis tags.tag
er NOT NULL
(ellers vil du måske beholde NULL
værdier i arrayet, men i så fald kan du ikke skelne mellem en enkelt eksisterende NULL
tag og en NULL
tag på grund af 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
Hvis der ikke findes nogen tags, returneres et tomt array.