есть таблица со следующими данными:
id - порядковый номер сообшения
from - id пользователя, который отправил сообшение
to - id пользователя, которому предназначается сообщение
time - время отправки
message - текст сообшения
type - модификатор. прочитано или нет
(визуально см. скрин table.jpg)
-----------------------
не могу составить запрос для того, чтобы определить количество пользователей, с которыми велись диалоги
(визуально см. скрин dialogi_main.jpg)
-----------------------
также прикрепляю код (txt|zip), который использую в настоящее время, поправьте пожалуйста
iceman12, получается два запроса:
SELECT DISTINCT `to` FROM `private` WHERE `to`=1 OR `from`=1;
SELECT DISTINCT `from` FROM `private` WHERE `to`=1 OR `from`=1;
Как их можно объединить? и не будет ли это сильной нагрузкой для бд?
SELECT `to` FROM `private` WHERE `from`=1 GROUP BY `to`;
По-моему этого достаточно будет.
nitron, рекомендую каждому диалогу присваивать номер, легче будет считать диалоги
03 Янв 2013, 21:56Gemorroj, это только для исходящих получается. а если тебе кто то напишет, то ты не увидешь
добавлено спустя 1 минуту:
HuKTO, как именно? создать еще одну таблицу, в которой вести учет диалогов, а сами сообщения хранить в другой таблице?
SELECT `to`, `from` FROM `private` WHERE `from` = 1 OR `to` = 1 GROUP BY `to`, `from`;
03 Янв 2013, 22:01Gemorroj, в этом случае я выберу все сообщения, в которых участвовал пользователь, а надо id пользователей, с которыми он вел диалоги.
То есть, надо выбрать из тех сообщений сообщения с уникальными id пользователей
добавлено спустя 1 минуту:
HuKTO, что поюзать? 
Да, что-то я тормознул)
SELECT `to` AS `uniq` FROM `private` WHERE `from` = 1
UNION
SELECT `from` AS `uniq` FROM `private` WHERE `to` = 1;