Исходя из формулировки вопроса, как-то очень просто выходит. Цитирую вас:
Как подсчитать общее количество записей по «парам»?
Вы хотите выбрать сообщения, которые
отослал полизователь или прислали пользователюSELECT * FROM `messages` WHERE `to_user`={$user['id']} OR `from_user`={$user['id']}
Дальше вы говорите, что на самом деле выбрать желаете что-то другое.
Тоесть два человека обменялись сообщениями... выводим цифру 1
Я так понимаю, что вы хотите получить общее количество диалогов, а не записей(в таблице сообщений)?!
А потом я смотрю на ваш запрос и вижу, что вы ищете(пытаетесь искать) количество диалогов в котором данный пользователь участвует.
SELECT * FROM `messages` AS z1
WHERE z1.`from`={$user['id']} OR z1.`to`={$user['id']}
AND NOT EXISTS(
SELECT id FROM `messages` as z2 WHERE z2.`to` = z1.`from` AND z2.`from` = z1.`to`
)
GROUP BY `from`,`to`