2016-11-26 1 views
0

현재 사용자와 다른 사용자 간의 마지막 메시지를 검색하여 페이스 북의 작동 방식과 같이 사용자의 메시지 페이지에 표시하고 싶습니다. 내가 이것을 사용했다.현재 사용자와 다른 사용자 사이의 마지막 메시지 가져 오기

<pre> 
select * 
from ch_messages 
where receiver='$current_user_id' or sender='$current_user_id' && (least(sender, receiver), greatest(sender, receiver), f_msg_date)  
in 
(
    select 
     least(sender, receiver) as x, greatest(sender, receiver) as y, 
     max(f_msg_date) as date 
    from ch_messages 
    group by sender, receiver 
) 
</pre> 

그러나 사용자로부터의 모든 메신저를 현재 사용자와 현재 사용자의 마지막 메시지에 전달한다. I want it like this image

이 당신은 단순히 각 메시지를 가정 하위 쿼리 reciver입니다 및 주위에 따옴표를 제거 할 필요가 내 테이블 구조

<pre> 
mid => messages id 
sender => The sender of the message 
receiver => The receiver of the message 
msg => The message sent 
f_msg_date => date in which the message was sent 
</pre> 

답변

0

인 고유 ID 열 (자동 증가)가 당신이 마지막 메시지를 원하는 경우

select * 
    from ch_messages 
    where receiver='$current_user_id' 
    or sender='$current_user_id' 
    AND (id, least(sender, receiver), greatest(sender, receiver), f_msg_date)  
    in 
    ( select 
      max(id) 
     , least(sender, receiver) 
     , greatest(sender, receiver), 
      max(f_msg_date) 
     from ch_messages 
     group by sender, receiver 
) 
+0

현재 사용자의 메시지를 비롯한 모든 메시지가 표시됩니다. 하지만 나는 현재 사용자의 메시지를 원합니다. 마지막 메시지 인 경우 회신 –

+0

@ClementSam이어야합니다. 응답 희망이 당신이 필요로하는 것을 업데이트하거나 정확한 결과를 이끌어 내십시오 – scaisEdge

+0

각 메시지는 고유 한 ID를 가지고 있습니다. 쿼리를 업데이트했지만 오류가 발생합니다. –

관련 문제