내받은 편지함에는 한 명의 사용자로부터받은 여러 개의 메시지 만 표시됩니다. 내받은 편지함을 페이스 북처럼 표시해야합니다. 한 사용자 당 하나의 메시지 만 표시합니다. 대화보기와 매우 비슷합니다. 여기서 나와 나와있는 사용자 사이의 마지막 메시지가받은 편지함에 표시됩니다 (마지막 메시지 또는 마지막 회신).MySQL :받은 편지함의 마지막 메시지를 사용자 당 하나씩 표시
GROUP BY를 시도했지만 결과가 정확하지 않습니다. 최근의 일부 메시지는 표시되지 않으며 마지막 대화 날짜별로 정렬되지 않습니다.
다음+-----------------------------------------------------------------------------------+
| users_messages |
+-----------------------------------------------------------------------------------+
| message_ID | sender |receiver| date | subject | body | unread | delete1 | delete2 |
+-----------------------------------------------------------------------------------+
+---------------------+
| members |
+---------------------+
| id | username | ...
+----+----------+-----+
내 현재 쿼리입니다 :
여기 내 데이터베이스 구조의
$result = $DB->query("SELECT p.*, p.sender as sender, m.*
FROM " . DB_PREFIX . "messages p
LEFT JOIN " . DB_PREFIX . "members m ON p.sender=m.member_id
WHERE p.receiver='" . $SESSION->conf['member_id'] . "' AND delete2=0
GROUP BY p.sender ORDER BY p.senddate DESC
LIMIT " . (($page - 1) * $PREFS->conf['per_page']) . ", " . $PREFS->conf['per_page']);
사용자 ID에 GROUP BY를 사용합니다. – Joddy
@Joddy : 두 개의 개별 사용자 ID 필드가 있습니다. 간단한 'GROUP BY'로는 충분하지 않습니다. – Kaivosukeltaja
@Kaivosukeltaja - 그러나 수신자 (사용자 ID 유형 2)가 수정되었습니다. 현재 변수 만 남아 있습니다 (사용자 ID 유형 1). 그래서'p.sender'에있는'GROUP BY '가 문제를 해결하지 않을까요? – Joddy