2014-09-19 3 views
0

У меня есть таблица с именем messages с этим создана:Mysql выбрать различные и все столбцы

`id` is the primary key. 
`from` is the current user. 
`to` is the receiver of the message. 
`by` is the sender of the message. 
`date` is the date of the message. its the time() function from php. 

Я хочу написать заявление, чтобы выбрать все уникальные to пользователей. Также я хочу выбрать последнее сообщение, посланное от from, до to и заказать по dateDESC. У меня есть только переменная from для предоставления запроса. У меня есть этот код, но он работает только частично. Он не вытягивает последнее сообщение между двумя пользователями.

$get_messages = $mysqli->query("SELECT DISTINCT `id`, `from`, `to`, `by`, `date`, `message`, `seen` FROM `messages` GROUP BY `to` WHERE `from` = '$from' ORDER BY `date` DESC"); 

Что я здесь делаю неправильно? Пожалуйста помоги!

+0

В стороне, на английском языке имеется приблизительно 1 м слов. Из этого огромного набора данных создатели MySQL сочли нужным зарезервировать всего (около) 230 из них. Это действительно было огромной неудачей, тогда в пуле из 5 слов вам удалось выбрать три из них! ;-) – Strawberry

+0

Я использую '', который указывает, что это имя столбца. –

ответ

2

Если я вас правильно понимаю, вы хотите получить последнее сообщение от пользователя to пользователя с указанным пользователем from.

SELECT a.* 
FROM messages a 
     INNER JOIN 
     (
      SELECT m.to, MAX(date) max_date 
      FROM messages m 
      WHERE m.from = @from 
      GROUP BY m.to 
     ) b ON a.to = b.to 
       AND a.date = b.max_date 
WHERE a.from = @from 
ORDER BY a.date DESC 
+0

Этот код работал как магия. Я бы никогда не догадался. Благодарю. –

Смежные вопросы