2016-04-24 134 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