2012-01-29 55 views
0

我有以下查询我的userschats表运行的加入,我想group bychatsuser_id OR receiver_id不只是user_id就像你可以看到下面的SQL查询中INNER JOIN复杂MySQL的搜索查询

SELECT c.*, users.username, users.firstname, users.lastname 
FROM chats c 
INNER JOIN(SELECT MAX(created) AS Date, user_id, receiver_id, chat, type, id 
FROM chats 
WHERE receiver_id = 286 OR user_id = 286 
GROUP BY user_id) cc ON cc.Date = c.created AND cc.user_id = c.user_id 
LEFT JOIN users ON users.id = c.user_id 
WHERE c.receiver_id = 286 OR c.user_id = 286 

我试图GROUP BY user_id OR receiver_id,但我似乎无法获得ID 286或者receiver_id或USER_ID信息。

有没有一种方法,我们可以通过这样实现它和组,我们可以考虑两列,并拿出从两个结果?

我需要做两个查询和将它们连接在一起呢?

+0

只是可以肯定,你的'charts'表包含任何具有user_id 286或receiver_id 286的行? – Arjan 2012-01-29 17:13:52

回答

1

如果您正在寻找最近的聊天记录,你为什么不只是创建的结果进行排序,并获得第一行是这样的:

SELECT c.*, users.username, users.firstname, users.lastname 
FROM chats c, users u 
WHERE (c.receiver_id = 286 OR c.user_id = 286) AND 
     u.id = c.user_id 
ORDER BY created DESC 
LIMIT 1 
+0

我正在为每个唯一的user_id或receiver_id寻找最近的聊天记录.... – 2012-01-30 08:37:20