2016-04-24 115 views
0

我试图重新创建一个对话列表,如whatsapp,它显示了你正在与一个对话的人的联系人名称,也是消息发布的时间,也是最后一条消息,不管它是否它来自您或发布邮件的联系人,换句话说,我需要始终查看联系人姓名,上次发布邮件的时间以及可能由我或收件人发送的最后一条邮件,我还需要携带从用户表中退回其他用户的图像。MySQL WhatsApp聊天查询

users表


userid | first_name |  url   | 
--------------------------------------------- 
    101 | name1  | www.image_url1.jpg | 
    102 | name2  | www.image_url2.jpg | 
    103 | name3  | www.image_url3.jpg | 
    104 | name4  | www.image_url4.jpg | 

消息表


MessageId | userid | senderid | message | timestamp | 
----------------------------------------------------------- 
    1  | 101 | 102 | message1 | 1234567 | 
    2  | 102 | 101 | message2 | 1234578 | 
    3  | 101 | 102 | message3 | 1235679 | 
    4  | 103 | 101 | message4 | 1256379 | 

我试图从数据库中查询,如果我的用户id = 101是最后的消息,并从时间戳无论是我还是与联系人一起使用的联系人userid,first_name和url

userid | first_name |  url   | message | timestamp | 
--------------------------------------------------------------------- 
    102 | name2 | www.image_url2.jpg | message3 | 1235679 | 
    104 | name4 | www.image_url4.jpg | message4 | 1227878 | 
---------------------------------------------------------------------- 

1)我想提取从用户表
2接触的用户ID,FIRST_NAME和URL),从接触

提取邮件表中的最新消息和时间戳任何帮助将是很好...

+0

你应该尝试使用'LIMIT' –

+0

我需要显示多于一条记录,如果有意义,我需要记录每个对话。同样如何显示WhatsApp对话 – TRicks

回答

0

在查询结尾处添加一个LIMIT 1,看看它是否有帮助。

+1

这不是答案......答案不以问号结尾 –

+0

嗯,你说得对。 – petemir

+0

不,因为限制1只会带回一条记录,所以我需要查看每个对话,但仅查看每个对话的最后一条消息以及其他用户名称 – TRicks

0

您必须知道两个用户之间发送/接收的最后一条消息的ID,因此您可以获取它们之间最新消息的详细信息。您的查询未指出,应该在您的where条款中。

+0

我确实有一个messageid字段,但它是一个主键,所以每个条目都给出一个递增的值,所以我应该包含另一个共享的messageID messageid与每个消息在同一个对话中发送,然后在此组中进行分组?请问这样的查询会如何? – TRicks

+0

否使用该主键。跟踪收到的最后一条消息的ID并在查询时使用它通过告诉MySQL获取ID高于该ID的消息来创建新的消息,每当你获取新消息时你都会这样做,你明白吗? – Amir

+0

是的,这是有道理的,但是我怎样才能引入每个对话的顶部消息?代码来抓取基于su的顶部b查询也许? – TRicks