Inną opcją może być array_remove(..., NULL)
(wprowadzony w wersji 9.3
) jeśli tags.tag
jest NOT NULL
(w przeciwnym razie możesz chcieć zachować NULL
wartości w tablicy, ale w takim przypadku nie można odróżnić jednego istniejącego NULL
tag i NULL
tag ze względu na 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
Jeśli nie zostaną znalezione żadne tagi, zwracana jest pusta tablica.