Nie próbowałbym robić tego wszystkiego w jednym zapytaniu. Wolałbym wykonać kilka małych, prostych zapytań, po jednym dla każdego typu encji (post na ścianie, komentarz, itp.), a następnie zebrać wyniki w kodzie PHP i wysłać do klienta.
Nie komplikuj zbytnio rzeczy, jest już dużo złożoności. :-)
Przykłady zapytań:
SELECT p.*, n.*
FROM notifications n
INNER JOIN wall_posts p ON p.id = n.item_id
WHERE n.type_id = 'wall_post' AND n.is_seen = 0;
ORDER BY time_stamp DESC
LIMIT 10;
SELECT c.*, n.*
FROM notifications n
INNER JOIN wall_comments c ON c.id = n.item_id
WHERE n.type_id = 'wall_post' AND n.is_seen = 0;
ORDER BY time_stamp DESC
LIMIT 10;