2011-08-15 4 views
0

I는
jos_messages => 'MESSAGE_ID (PK)', '메시지', 'TOUSER ID를'from_user_id 'MySQL이 조인 테이블

jos_message_thread =>'PK를 thread_id ','FK 3 개 테이블 MESSAGE_ID 한 ','from_user_id ','to_user_id '

jos_users =>'USER_ID (FK) ','FIRSTNAME ','아바타 '

나는 하나 개의 결과에서 데이터를 반환하기 위해이 테이블 쿼리를 만들 필요가 데이터는 다음과 같습니다. 마지막으로 삽입 된 메시지 (jos_messages), 이름 및 아바타 of message sender (jos_users) the res

메시지 : ULT 이런 식으로 뭔가해야

FIRSTNAME "안녕하세요, 지난 삽입 님에게 메일입니다"

아바타 "ledif": "http://a.com/a.png"

내가 지금 질문 한 내용이지만 문제는 반환 된 메시지가 마지막으로 삽입 된 메시지가 아니라는 것입니다.

SELECT jmt.from_user_id, jm.message, ju.firstname, ju.avatar 
FROM jos_messages_thread AS jmt 
LEFT JOIN jos_messages AS jm ON jm.message_id = jmt.message_id 
LEFT JOIN jos_comprofiler AS ju ON ju.user_id =  jmt.from_user_id 
WHERE jmt.to_user_id ='$user_id' 
AND jmt.thread_owner ='$user_id' 
GROUP BY jmt.from_user_id 

왼쪽 결합 쿼리의 중간에 jm.message_id를 ORDER 할 수 있습니까? 다음과 같이 만들 수 있습니다.

LEFT JOIN jos_messages AS jm ON jm.message_id = (LAST INSERTED) jmt.message_id 

감사합니다. btw Im는 영어로 좋지 않다, Im는 나의 질문이 그렇게 분명하지 않은 것을 유감스럽게 생각한다.

+0

message_id가 자동으로 증가합니까 ?? 그렇다면 마지막으로 삽입 된 메시지는 가장 큰 ID를 가진 사람이됩니다 –

+0

@Hunter McMillen 예. 그것은 내가 기대하는 것이었지만 그것은 일어나지 않았습니다. – janusbalatbat

+0

당신은 또한'ORDER BY' 문을 포함시켜야합니다. 'ORDER BY message_id DESC LIMIT 1'을 실행하면 가장 큰 ID 인 –

답변

0

ORDER BY를 삽입하는 중에도 삽입 할 필요가 없습니다. 전체 쿼리의 끝에 ORDER BY jm.message_id DESC을 입력하고 LIMIT 1을 사용하여 결과를 첫 번째 행으로 제한하십시오.

0
LEFT JOIN jos_messages AS jm ON jm.message_id = (Select jthread.message_id from jos_messages_thread Order By jthread.message_id desc Limit 1) 
+0

을 얻었지만 모든 행에 대해 하나의 메시지 데이터를 반환합니다. – janusbalatbat