2017-03-04 115 views
0

好吧,所以我有了這個查詢SQL獲得多個結果

SELECT DISTINCT private_messages.*, 
          users.ID AS userID, 
          users.username AS username, 
          profiles.img_url AS profileImage 
          FROM private_messages 
          INNER JOIN users ON users.username = private_messages.receiver 
          INNER JOIN profiles ON profiles.userID = users.ID 
         WHERE private_messages.sender ='Admin' 
         AND private_messages.id IN (select max(ID) 
         FROM private_messages GROUP BY sender 
       )     
       ORDER BY private_messages.sent_at DESC 

現在查詢工作正常,但我想對發送者和接收者的結果是,甚至有可能?

例如,此查詢過濾由管理員發送的「唯一」消息,但我也想檢查他收到的消息。

所以基本上我想改變這個查詢做的事情波紋管收到

  • 列表中的所有私人信息的用戶和發送,並確保它們是唯一

通過獨特的我基本上是說我不希望看到我發送給某人的一些消息,他們只是迴應了我,我希望看到每個人只有1條消息

這是我從當前查詢中得到的 enter image description here

+0

編輯你的問題,並提供樣品數據和期望的結果。 –

+0

是什麼目的:IN private_messages.id(選擇MAX(ID) FROM private_messages GROUP BY發件人 ) –

回答

1

更換

private_messages.sender ='Admin' 

(private_messages.sender ='Admin' OR private_messages.receiver ='Admin') 
+0

類似的東西,但不是100% 我想顯示獨特的消息,因此,例如 的http:// imgur .com/a/I7Gim 正如您在該圖片上看到的那樣,它顯示了我發送和接收的消息,但它仍然是相同的對話。我想展示獨特的對話 –

+0

什麼表示數據中的對話? –

+0

據我所知,您沒有「會話」數據存儲在任何地方。當您回覆消息時,請將您正在回覆的消息的ID存儲爲「response_to_msg_id」。然後你可以將它們連接在一起。 –

0

你應該改變的條件管理員作爲發件人接收器:

SELECT DISTINCT private_messages.*, 
          users.ID AS userID, 
          users.username AS username, 
          profiles.img_url AS profileImage 
          FROM private_messages 
          INNER JOIN users ON users.username = private_messages.receiver 
          INNER JOIN profiles ON profiles.userID = users.ID 
         WHERE (private_messages.sender ='Admin' or private_messages.receiver = 'Admin') 
         AND private_messages.id IN (select max(ID) 
         FROM private_messages GROUP BY sender 
       )     
       ORDER BY private_messages.sent_at DESC