Можно соорудить простой запрос для подсчёта количества разговоров
SELECT ifnull(COUNT ( `dl2`.`dialog_id`),0) AS ` dialog_count`
FROM `dialog_relations` AS `dl1`
INNER JOIN `dialog_relations` AS `dl2` USING(`dialog_id`)
WHERE `dl1`.`user_id` = @user1 AND `dl2`.`user_id` = @user2
Но в приведённой вами схеме данных такой запрос может завышать количество разговоров, если они есть. Если совпадений нет, то они не появятся. Чтобы этот запрос работал корректно, рекомендую в первой таблице вместо искусственного PK в виде id записи сделать составной PK состоящий из ID разговора и ID участника, тогда он будет отражать суть и предохранять от дублирования записей.
Для конкретно вашего случая правильно считать количество будет запрос
SELECT ifnull(COUNT (DISTINCT `dl2`.`dialog_id`),0) AS ` dialog_count`
FROM `dialog_relations` AS `dl1`
INNER JOIN `dialog_relations` AS `dl2` USING(`dialog_id`)
WHERE `dl1`.`user_id` = @user1 AND `dl2`.`user_id` = @user2
Чтобы лишь определить наличие разговоров можно сделать "красивее"
SELECT ifnull(COUNT (DISTINCT `dl2`.`user_id`),0) AS ` dialog_count`
FROM `dialog_relations` AS `dl1`
INNER JOIN `dialog_relations` AS `dl2` USING(`dialog_id`)
WHERE `dl1`.`user_id` = @user1 AND `dl2`.`user_id` = @user2
тут 0 - нет диалогов, 1 - есть диалоги.
P.S. Справедливости ради хочу отметить, что без ifnull'а должно подойти для запроса
@akashtrih-а. Единственное, стоит проверить на запросе с отсутствием разговоров между пользователями.