отображение ОПРЕДЕЛЕННОЙ информации в sql (ниже определенного значения) - PullRequest
0 голосов
/ 05 августа 2011

Я создаю эту систему сообщений и у меня возникают проблемы.По сути, это система типов потоков, вроде сообщений в стиле Facebook.Пользователь 1 отправляет пользователю 75 сообщение (сообщение 1 и поток 1), и пользователь 75 отвечает сообщением (сообщение 2 создается в потоке 1) и так далее, и так далее.Теперь я могу отображать все идеально.

Допустим, он доходит до того, что пользователь 75 отправляет свой 5-й ответ в этом потоке (сообщение 13), а пользователь 1 удаляет сообщение, чтобы очистить свой почтовый ящик (СЕЙЧАС сообщение 5 имеет значение «удалено»).) ..... если пользователь 75 ответит, то КАЖДЫЕ СООБЩЕНИЯ в этой теме снова появятся перед ним.Я хочу, чтобы это работало таким образом, чтобы ответ пользователя 75 выглядел как новая тема для пользователя 1 (но это не так, как я могу добиться этого в sql). Вот sql для отображения сообщений в теме

mysql>     SELECT message_id,thread_id,messages.user_id,to_id,messages.subject,messages.body,from_message_status,to_message_status,message_status,new,messages.date FROM messages 
    ->         INNER JOIN users ON users.id = messages.user_id
    ->         INNER JOIN messages_thread ON messages_thread.id = messages.thread_id
    ->         WHERE thread_id = 1
    ->         GROUP BY messages.message_id ORDER BY message_id ASC  ;
+------------+-----------+---------+-------+---------+---------------------------------------------------------------+---------------------+-------------------+----------------+-----+------------+
| message_id | thread_id | user_id | to_id | subject | body                                                          | from_message_status | to_message_status | message_status | new | date       |
+------------+-----------+---------+-------+---------+---------------------------------------------------------------+---------------------+-------------------+----------------+-----+------------+
|          1 |         1 |      75 |     1 |         | Wassup man.                                                   | unread              | unread            | deleted        |   0 | 1312493817 |
|          2 |         1 |       1 |    75 |         | im chilling , and you?                                        | unread              | unread            | read           |   0 | 1312493867 |
|          3 |         1 |      75 |     1 |         | Yea same same just posted man trying to find something to do. | unread              | unread            | deleted        |   0 | 1312493895 |
|          4 |         1 |      75 |     1 |         | what you trying to get into today?                            | unread              | unread            | deleted        |   0 | 1312493904 |
|          5 |         1 |      75 |     1 |         | just play some video games or something. you?                 | unread              | unread            | deleted        |   0 | 1312494046 |
|          6 |         1 |      75 |     1 |         | hello? dude?                                                  | unread              | unread            | read           |   0 | 1312494108 |
+------------+-----------+---------+-------+---------+---------------------------------------------------------------+---------------------+-------------------+----------------+-----+------------+

Как вы видите последнее удаление в message_status?я пытаюсь отобразить все, что ниже

1 Ответ

2 голосов
/ 05 августа 2011
 SELECT ... FROM messages 
             INNER JOIN users ON users.id = messages.user_id
             INNER JOIN messages_thread ON messages_thread.id = messages.thread_id
             WHERE thread_id = 1 
             AND message_id > 
                (SELECT max(message_id) FROM messages 
                   WHERE thread_id = 1 and message_status = 'DELETED')
             GROUP BY messages.message_id ORDER BY message_id ASC  ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...