Ett annat alternativ kan vara array_remove(..., NULL)
(introducerades i 9.3
) om tags.tag
är NOT NULL
(annars kanske du vill behålla NULL
värden i arrayen, men i så fall kan du inte skilja på en enda befintlig NULL
tagg och en NULL
taggen på grund av 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
Om inga taggar hittas returneras en tom array.