Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Выборка последнего сообщения в переписки между двумя людьми

Сообщения:  [1-10]   [11-12] 

 
 автор: KPETuH   (29.11.2011 в 20:51)   письмо автору
 
   для: Lotanaen   (29.11.2011 в 16:51)
 

Снимаю шляпу !

  Ответить  
 
 автор: 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"
); 

?> 

  Ответить  
 
 автор: KPETuH   (29.11.2011 в 15:34)   письмо автору
 
   для: selma   (26.11.2011 в 09:59)
 

~

  Ответить  
 
 автор: selma   (27.11.2011 в 08:03)   письмо автору
11.8 Кб
 
   для: sl1p   (27.11.2011 в 06:15)
 

это и есть ОДНО НО! Если я написала кому нибудь, а до этого я с этим человеком не переписывалась. Мое исходящее не выведет:(((( Я совсем в замешательстве....

В аттаче, пример, как это организованно в соц.сети

  Ответить  
 
 автор: sl1p   (27.11.2011 в 06:15)   письмо автору
 
   для: selma   (27.11.2011 в 04:24)
 

разве таким способом будет выбрано сообщение если kto = 1, komu = n?
будет выбор сообщений только адресованных `komu`
интересная задачка кстати) мозг уже не варит, попробую решить её завтра )

  Ответить  
 
 автор: selma   (27.11.2011 в 04:24)   письмо автору
 
   для: 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/>"
  } 
?>

Цель достигнута, но если поможете оптимизировать запросы, буду благодарна

  Ответить  
 
 автор: sl1p   (27.11.2011 в 04:19)   письмо автору
 
   для: selma   (27.11.2011 в 03:43)
 

.

  Ответить  
 
 автор: 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 (оно может быть как от меня ему, так и мне от него)

А еще же нужно выводить всех пользователей с которыми я переписывалась, Группировать их по имени, чтобы имена в списке не повторялись. А также чтобы весь список пользователей сортировался по свамому новому сообщению !мне! или от !меня!

З.Ы: В моем первом посте, вывод реализован, НО не сортирует пользователей по дате обращения ИХ ко мне. или МЕНЯ к ним

Ребята, тему не правильно назвали! ЭТО НЕ переписка между двумя людьми, а сгруппированный вывод всей переписки одного человека с другими

  Ответить  
 
 автор: cheops   (26.11.2011 в 21:05)   письмо автору
 
   для: selma   (26.11.2011 в 18:15)
 

Т.е. вам просто нужно последние сообщение выбранного пользователя или ответ ему? Тогда еще проще
SELECT * FROM `table` 
WHERE 
  komu=1 OR 
  kto=1
ORDER BY `times` DESC 
LIMIT 1

  Ответить  
 
 автор: selma   (26.11.2011 в 18:15)   письмо автору
 
   для: cheops   (26.11.2011 в 12:45)
 

Уважаемый Хеопс, id = 1, допустим мой. А как быть с другими пользователями? их может быть сколько угодно. И каждый может писать письма

Суть такова, что данные должны быть представленны следующим образом:

Вася (Дата последнего сообщения переписки с Васей)
(Последнее сообщение переписки с Васей от меня ему или от него мне)

Петя (Дата последнего сообщения переписки с Петей)
(Последнее сообщение переписки с Петей от меня ему или от него мне)

Маша (Дата последнего сообщения переписки с Машей)
(Последнее сообщение переписки с Машей от меня ей или от нее мне)

Весь список должен сортироваться по дате общения с пользователем (Васей, Петей, Машей)

  Ответить  

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования