2012-06-10 2 views
0

2 개의 테이블 메시지와 대화를 만들었습니다.특정 순서로 결과를 표시하는 간단한 mysql 쿼리

대화 테이블은 메시지를 보내고받는 두 명의 사용자에 대해 고유 한 ID를 만듭니다.

메시지 테이블에는 사용자 메시지의 모든 정보가 포함됩니다.

대화 테이블

conversation_id | user_id1 | user_id2 |last_message_id 
     1    5   1   4 
     2    5   2   5 

message_id | conversation_id | sender_id | message | created_time 
    1   1     5   MSG A  2012-06-10 00:20:04 
    2   1     5   MSG B  2012-06-10 00:20:21 
    3   1     5   MSG C  2012-06-10 00:21:09 
    4   1     1   MSG D  2012-06-10 00:22:23 
    5   2     5   MSG E  2012-06-10 00:25:16 

출력 내가 원하는 :

sender_id | message | created_time 
    5  MSG E  2012-06-10 00:25:16 
    1  MSG D  2012-06-10 00:22:23 

내가 뭘하려 :

SELECT * FROM conversation c, messages m 
WHERE c.user_id1='$userid' OR c.user_id2='$userid' 
AND c.last_message_id=m.message_id 
ORDER BY created_time DESC 

그러나 생 쿼리가 올바른 결과를 표시하지 않습니다.

다음과 같이 그룹화 할 필요가 있습니까?

SELECT * FROM TABLE 
WHERE CONDITION 
(SELECT MAX(created_time) 
FROM TABLE 
GROUP BY SOMEFEILD) 
order by time desc 

답변

0

봅니다이

SELECT * FROM conversation c, messages m 
WHERE (c.user_id1='$userid' OR c.user_id2='$userid') 
AND c.last_message_id=m.message_id 
ORDER BY created_time DESC 
+0

위대한처럼 쿼리를 변경합니다! 그것은 작동합니다 !! .... – Jadzia

관련 문제