2017-03-04 113 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