2016-12-26 14 views
1

我需要加入用户信息表和最后回复的聊天消息查询。用最后一次对话查询加入用户表

聊天表

mid | sender | receiver| text | created 
    1 | chrys |  Paul| Hello | 2015-12-08 20:00 
    2 | chrys2 | Chrys | Hey  | 2015-12-08 20:10 

在过去的答复结果我使用该脚本:

mysql_query(" 
select * 
    from 
     chat 
     join 
     (select user, max(created) m , COUNT(*) AS msgCount 
      from 
       (
       (select mid, receiver user, created 
        from chat 
        where sender='$login_session') 
       union 
       (select mid, sender user, created 
        from chat 
        where receiver='$login_session') 
       ) t1 
      group by user) t2 
    on ((sender='$login_session' and receiver=user) or 
     (sender=user and receiver='$login_session')) and 
     (created = m) 
    order by created desc 
    "); 

我的问题是,我无法弄清楚如何加入一个用户信息表像如下:

id | username | photo_url | age | etcetera..... 

有些想法? 我所需要的只是获取有关用户的信息,例如照片等的sendind消息,来自users_info表的年龄。

+0

你能澄清你正在尝试做什么?你有一张用户表,你有一个消息表 - 当你的查询完成后,你想要什么信息? –

+0

photo_url,年龄和在users_info表中找到的任何内容。 –

+1

检查这是否有帮助。 http://stackoverflow.com/questions/41054587/join-multiple-row-column-mysql/41055339#41055339 –

回答

0

同时,我找到了答案。这里是:

select c.*, u.photo 
from chat c 
join users u on u.username = c.sender 
WHERE (sender = '$login_session' AND receiver = '$uid') OR 
     (sender = '$uid' AND receiver = '$login_session') 
0

根据您的查询,您正尝试获取已登录用户发送或接收的上次聊天消息。

为此,

select c.* 
from chat c 
join users u on u.id = c.receiver_id or u.id = c.sender_id 
where u.id = 'SESSION.User.Id' 
order by c.id desc 
+1

你的答案部分工作。我找到了答案,我在这里发布。 :) –

+0

感谢您的更新。 –