I have a very similar setup to this answer Is there a simpler way to achieve this style of user messaging?
However I'm having an issue with getting the total unread conversations and not unread messages.
SELECT p.conversation_id, COUNT(p.conversation_id) as unread
FROM participation AS p
INNER JOIN messages AS m
    ON m.conversation_id = p.conversation_id AND m.seen = 0
WHERE p.uid1 = {$user->data['id']}
GROUP BY m.conversation_id`
I'm only selecting p.conversation_id for testing purposes, but the result I am getting is:
Array
(
    [conversation_id] => 1
    [unread] => 77
)
If I were to put the results in a PHP while loop I get
Array
(
    [conversation_id] => 1
    [unread] => 77
)
Array
(
    [conversation_id] => 3
    [unread] => 7
)
Array
(
    [conversation_id] => 8
    [unread] => 1
)
Array
(
    [conversation_id] => 17
    [unread] => 35
)
Array
(
    [conversation_id] => 22
    [unread] => 2
)
Array
(
    [conversation_id] => 24
    [unread] => 305
)
Array
(
    [conversation_id] => 29
    [unread] => 41
)
Array
(
    [conversation_id] => 31
    [unread] => 1
)
The result I am wanting is unread: 8