Nesnažil bych se to udělat vše v jednom dotazu. Raději bych udělal několik malých jednoduchých dotazů, jeden pro každý typ entity (příspěvek na zeď, komentář atd.), poté sestavil výsledky v kódu PHP a odeslal je klientovi.
Nekomplikujte věci příliš, už je tu spousta složitostí. :-)
Příklady dotazů:
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;