SELECT * FROM ( /* Hidden Views */ SELECT 0 AS show, vi.view_id, vi.view_name, usr.full_name AS owner_name, usr.user_email AS owner_email, vi.base_view, Count(vd.pkg_id) AS pkg_count, vi.owner_id FROM views vi, view_def vd, users usr WHERE (vi.owner_id = 0 OR vi.public_read='Y') AND usr.user_id = vi.owner_id AND vi.base_view != 'Y' AND vi.view_id = vd.view_id(+) AND vi.view_id NOT IN (SELECT vis.view_id FROM view_settings vis WHERE vis.user_id = $USER_ID$ ) GROUP BY vi.view_id, vi.view_name, usr.full_name, usr.user_email, vi.base_view, vi.owner_id UNION /* Shown Views */ SELECT 1 AS show, vi.view_id, vi.view_name, usr.full_name AS owner_name, usr.user_email AS owner_email, vi.base_view, Count(vd.pkg_id) AS pkg_count, vi.owner_id FROM views vi, view_settings vis, view_def vd, users usr WHERE vi.view_id = vis.view_id AND usr.user_id = vi.owner_id AND vi.view_id = vd.view_id(+) AND vis.user_id = $USER_ID$ AND vi.public_read = 'Y' AND vi.base_view != 'Y' GROUP BY vi.view_id, vi.view_name, usr.full_name, usr.user_email, vi.base_view, vi.owner_id UNION /* Base Views */ SELECT NVL2(vis.view_id, 1, 0) AS show, vi.view_id, vi.view_name, '' AS owner_name, '' AS owner_email, vi.base_view, Count(pv.pkg_id) AS pkg_count, 0 as owner_id FROM views vi, release_content rc , package_versions pv , view_settings vis WHERE vi.base_view = 'Y' AND rc.base_view_id(+) = vi.view_id AND rc.pv_id = pv.pv_id(+) AND vi.view_id = vis.view_id(+) AND vis.user_id(+) = $USER_ID$ GROUP BY vis.view_id, vi.view_id, vi.view_name, vi.base_view ) pview ORDER BY UPPER(pview.view_name) ASC