Как правильно сделать запрос?
Столбец userid1: 1,2,3,4,5,4,5,4,3,1,2
Столбец userid2: 2,2,2,3,3,1,1,5,3,1,2
Допустим это таблица истории отправки приватных сообщений одного пользователя к другому.
Какой запрос нужно сделать, чтобы выяснить сколько уникальных переписок (с разными пользователями) было у пользователя с id: 2 или с id: 3
p.s. попытался понятно изложить вопрос… как получилось…
подсчет кол. уникальных значений user_id в таблице table;
вам остается лишь под себя отредактировать код
Ну по сути, вам необходимо это представить как два массива [[2,1],[2,2],[2,3],[3,4] ...] и еще один, с таким же содержанием. Берем их, и делаем мат. множество, и считаем сколько элементов в множестве:
SELECT COUNT(a.*) FROM (SELECT user_id, user_id2 FROM test_users WHERE user_id = 2 OR user_id2 = 2
UNION
SELECT user_id, user_id2 FROM test_users WHERE user_id2 = 2 OR user_id = 2) a;
Вопросы оптимизации запроса оставлю за вами =)
Успехов.
UPD:
Извините, некорректно дал вам ответ. Вот правильный запрос:
SELECT COUNT(a.*) FROM ((SELECT user_id2 FROM test_users WHERE user_id = 2 AND user_id2 <> 2 GROUP BY user_id2)
UNION ALL
(SELECT user_id FROM test_users WHERE user_id2 = 2 AND user_id <> 2 GROUP BY user_id)) a;