CREATE VIEW api.post AS SELECT p.id, p.user_id, p.content, p.created, p.modified, COALESCE(c.cc, 0) AS comment_count FROM admin.post p LEFT JOIN ( SELECT COUNT(c.id) as cc, c.post_id FROM admin.comment c GROUP BY c.post_id ) c ON p.id = c.post_id LEFT JOIN admin.user u ON u.id = p.user_id WHERE p.deleted <> TRUE AND u.deleted <> TRUE ORDER BY p.id DESC; GRANT SELECT ON TABLE api.post TO rest_anon, rest_user; GRANT SELECT ON TABLE admin.post TO rest_anon, rest_user;