SELECT post.id FROM list_posts AS post LEFT OUTER JOIN private ON (post.id = private.pid AND private.uid = UIDGOESHERE) LEFT OUTER JOIN official_user AS adminu LEFT OUTER JOIN count_comments AS ccount ON (post.id = ccount.pid) WHERE post.id = PIDGOES HERE AND( post.private = false OR adminu.user = UIDGOESHERE OR count(private) = 1 ) LIMIT 1