Как выбрать не повторяющиеся строки?

Как правильно сделать запрос?

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1840
Есть таблица:
Столбец 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. попытался понятно изложить вопрос ... как получилось ....
Мой блог с плюшками
Посетитель
small user social cms
Медаль
Сообщений: 101
select COUNT(DISTINCT(user_id)) from table;
подсчет кол. уникальных значений user_id в таблице table;
вам остается лишь под себя отредактировать код
Посетитель
small user social cms
Сообщений: 5
Здравствуйте!
Ну по сути, вам необходимо это представить как два массива [[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;
Редактировалось: 1 раз (Последний: 15 августа 2014 в 14:33)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.