메시징 시스템을 개발 중이며 쿼리를 작성하는 데 문제가 있습니다 (MYSQL). 간단히 말해서 각 대화 사용자가 사용자에게 마지막으로 한 메시지의 배열을 반환해야합니다.메시징 시스템 용 mysql 쿼리
SELECT * FROM tbl_message s1 WHERE s1.created_on IN (
SELECT MAX(s2.created_on)
FROM tbl_message s2 WHERE s1.from_user=".$userID." OR s2.to_user=".$userID."
GROUP BY s2.from_user, s2.to_user)
AND status = 0";
잘 작동하지만, 나에게 FROM_USER 및 to_user 2 마지막 메시지 대신 모두 1 마지막 메시지를주고 :
CREATE TABLE 'tbl_message'('id' int(10) AUTO_INCREMENT,
'from_user' int(10),
'to_user' int(10),
'reply_to' int(10),
'subject',
'body' text,
'status' tinyint(3),
'deleted_from_sender' tinyint(3),
'deleted_from_recipient' tinyint(3)',
'created_on' datetime,
나는 쿼리를 썼다. 그것은 GROUP BY 때문에 당연히 질문은 어떻게 내가 하위 쿼리에서 max created_on (실제로 mysql datestamp)을 찾을 수 있었 을까라는 것입니다. 또는 다른 해결책을 주시면 감사하겠습니다. 도움이나 조언을 해주십시오. 예를 들어 일부 데이터
+----+-------+--------+--------+---------------------+--------+---------+
| id | from_user | to_user | subject | created_on | status |
+----+-------+--------+--------+---------------------+--------+---------+
| 1 | 68 | 128 | somesubject1 | 2013-07-01 21:31:29 | 0 |
+----+-------+--------+--------+---------------------+--------+---------+
| 2 | 128 | 68 | somesubject2 | 2013-07-01 21:41:29 | 0 |
+----+-------+--------+--------+---------------------+--------+---------+
| 3 | 128 | 68 | somesubject3 | 2013-07-01 21:51:29 | 0 |
+----+-------+--------+--------+---------------------+--------+---------+
| 4 | 68 | 226 | somesubject4 | 2013-07-01 22:01:29 | 0 |
+----+-------+--------+--------+---------------------+--------+---------+
쿼리의 출력
| 3 | 128 | 68 | somesubject3 | 2013-07-01 21:51:29 | 0 |
+----+-------+--------+--------+---------------------+--------+---------+
| 4 | 68 | 226 | somesubject4 | 2013-07-01 22:01:29 | 0 |
샘플 데이터와 원하는 결과를 입력하고 업데이트 된 바이올린을 게시 할 수 있습니까? http://sqlfiddle.com/#!2/ac316 - 귀하의 답변을 얻는 데 도움이 될 것입니다. – sgeddes
맬웨어를 호스팅하는 것으로 알려진 사이트에 이미지를 게시 할 수 있습니까? http://google.com/safebrowsing/diagnostic?site=radikal.ru/ – Oerd
sgeddes가 업데이트되었습니다. 죄송 합니다만 그 곳에서 호스팅하는 이미지는 맬웨어가 없어야합니다. – Alekso