|
|
|
|
|
для: Lotanaen
(29.11.2011 в 16:51)
| | Снимаю шляпу ! | |
|
|
|
|
|
|
|
для: selma
(27.11.2011 в 04:24)
| | Попробуйте таким образом:
<?
$q_mess = mysql_query("SELECT * , IF(`komu`='1',`kto`,`komu`) as parname FROM (SELECT * FROM `table` ORDER BY `times` DESC)
AS table2
WHERE (`komu`='1' or `kto`='1')
GROUP BY parname
ORDER BY `times` DESC");
?>
|
| |
|
|
|
|
|
|
|
для: selma
(26.11.2011 в 09:59)
| | ~ | |
|
|
|
|
 11.8 Кб |
|
|
для: sl1p
(27.11.2011 в 06:15)
| | это и есть ОДНО НО! Если я написала кому нибудь, а до этого я с этим человеком не переписывалась. Мое исходящее не выведет:(((( Я совсем в замешательстве....
В аттаче, пример, как это организованно в соц.сети | |
|
|
|
|
|
|
|
для: selma
(27.11.2011 в 04:24)
| | разве таким способом будет выбрано сообщение если kto = 1, komu = n?
будет выбор сообщений только адресованных `komu`
интересная задачка кстати) мозг уже не варит, попробую решить её завтра ) | |
|
|
|
|
|
|
|
для: sl1p
(27.11.2011 в 04:19)
| | Нашла решение таким способом:
<?
$q_mess = mysql_query("SELECT * FROM (SELECT * FROM `table` ORDER BY `times` DESC)
AS table2
WHERE `komu`='1'
GROUP BY `kto`
ORDER BY `times` DESC");
while($arr = mysql_fetch_assoc($q_mess))
{
$arr_m = mysql_fetch_assoc(mysql_query("SELECT * FROM `table` WHERE `kto`='".$arr['kto']."' OR `komu`='".$arr['kto']."' ORDER BY `times` DESC LIMIT 1"));
echo $arr['kto']." ".date("d.m.y H:i:s", $arr_m['times'])."<br/>";
echo htmlspecialchars($arr_m['mess'])."<br/>";
}
?>
|
Цель достигнута, но если поможете оптимизировать запросы, буду благодарна | |
|
|
|
|
|
|
|
для: selma
(27.11.2011 в 03:43)
| | . | |
|
|
|
|
|
|
|
для: cheops
(26.11.2011 в 21:05)
| | Это мой второй запрос, у меня он реализован в цикле первого запроса
Уже не знаю как и объяснить... нарисовать что ли:)
Вот Я захожу в раздел сообщения
Выводится весь список пользователей с которыми я переписывалась
Выводится так:
Пользователь 1 (id=2) [дата последнего сообщения переписки с пользователем 1]
--Последние сообщение переписки с пользователем 1 (оно может быть как от меня ему, так и мне от него)
РАЗДЕЛИТЕЛЬ
Пользователь 2 (id=3) [дата последнего сообщения переписки с пользователем 2]
--Последние сообщение переписки с пользователем 2 (оно может быть как от меня ему, так и мне от него)
РАЗДЕЛИТЕЛЬ
и т.д
|
Так вот:
SELECT * FROM `table`
WHERE
komu=ID ИЗ СПИСКА ПОЛЗОВАТЕЛЕЙ OR
kto=ID ИЗ СПИСКА ПОЛЗОВАТЕЛЕЙ
ORDER BY `times` DESC
LIMIT 1
|
Выводит: --Последние сообщение переписки с пользователем N (оно может быть как от меня ему, так и мне от него)
А еще же нужно выводить всех пользователей с которыми я переписывалась, Группировать их по имени, чтобы имена в списке не повторялись. А также чтобы весь список пользователей сортировался по свамому новому сообщению !мне! или от !меня!
З.Ы: В моем первом посте, вывод реализован, НО не сортирует пользователей по дате обращения ИХ ко мне. или МЕНЯ к ним
Ребята, тему не правильно назвали! ЭТО НЕ переписка между двумя людьми, а сгруппированный вывод всей переписки одного человека с другими | |
|
|
|
|
|
|
|
для: selma
(26.11.2011 в 18:15)
| | Т.е. вам просто нужно последние сообщение выбранного пользователя или ответ ему? Тогда еще проще
SELECT * FROM `table`
WHERE
komu=1 OR
kto=1
ORDER BY `times` DESC
LIMIT 1
|
| |
|
|
|
|
|
|
|
для: cheops
(26.11.2011 в 12:45)
| | Уважаемый Хеопс, id = 1, допустим мой. А как быть с другими пользователями? их может быть сколько угодно. И каждый может писать письма
Суть такова, что данные должны быть представленны следующим образом:
Вася (Дата последнего сообщения переписки с Васей)
(Последнее сообщение переписки с Васей от меня ему или от него мне)
Петя (Дата последнего сообщения переписки с Петей)
(Последнее сообщение переписки с Петей от меня ему или от него мне)
Маша (Дата последнего сообщения переписки с Машей)
(Последнее сообщение переписки с Машей от меня ей или от нее мне)
Весь список должен сортироваться по дате общения с пользователем (Васей, Петей, Машей) | |
|
|
|
|