Saya tidak akan mencoba melakukan semuanya dalam satu permintaan. Saya lebih suka membuat beberapa kueri sederhana kecil, satu untuk setiap jenis entitas (posting dinding, komentar, dll), lalu kumpulkan hasilnya dalam kode PHP dan kirim ke klien.
Jangan terlalu rumit, sudah ada banyak kerumitan. :-)
Contoh kueri:
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;