Saya hanya membagikan bagian kueri yang menyelesaikan persyaratan pertama dan kedua Anda dengan asumsi bahwa data Anda tetap dalam struktur yang sama. Anda dapat menambahkan gabungan dan detail lain yang diperlukan dalam kueri Anda.
SELECT
myView.*,
CONCAT(REPLACE(REPLACE(group_concat(SUBSTRING(notification_message,9)),'</strong>',''),SUBSTRING_INDEX(notification_message,'>',-1),''), SUBSTRING_INDEX(notification_message,'>',-1)) AS Message
FROM
(SELECT DISTINCT
receiver_id,
notification_issuer,
notification_message,
notification_target,
notification_type
FROM imgzer_notifications
WHERE receiver_id = 9 and notification_seen = 1
ORDER BY notification_time DESC) myView
GROUP BY myView.receiver_id, myView.notification_target, myView.notification_type;
Saya tahu fungsi String terlihat rumit, tetapi untuk sampai pada output yang Anda butuhkan, harus bermain-main dengan String yang dihasilkan. Saya telah sedikit memodifikasi kumpulan data Anda di SQL Fiddle untuk memeriksa keluaran saya. Anda dapat melakukan hal yang sama di:
http://www.sqlfiddle.com/#!2/70a937/49
Beri tahu saya jika ada kriteria lain yang harus dipenuhi atau peningkatan apa pun yang Anda perlukan dalam kueri.