我的表格中有一个表'消息',其中存储了所有消息,并提供了所有必要的信息。
以下是ID(23)的一个快速示例:
------------------------------------------------------------------
| id | to_id | from_id | message | answer | answered | anonymous |
------------------------------------------------------------------
| 1 | 23 | 18 | msg | ans | 1 | 0 |
------------------------------------------------------------------
| 2 | 23 | 2 | msg | NULL | 0 | 0 |
------------------------------------------------------------------
| 3 | 18 | 23 | msg | ans | 1 | 1 |
------------------------------------------------------------------
| 4 | 2 | 23 | msg | NULL | 0 | 1 |
------------------------------------------------------------------
| 5 | 23 | 18 | msg | NULL | 0 | 1 |
------------------------------------------------------------------
第一行:我收到了来自userID(18)的消息并已回复。
第二行:我收到了来自userID(2)的消息,但没有接听。
第三行:我已经向用户ID(18)发送了一条消息,其答案是匿名的。
第四行:我已经向userID(2)发送了一条消息,没有回答,也没有回复。
第五行:我收到了一条消息,但来自匿名用户。
我想将我发送或收到消息的每个用户分组,如果该消息未与该用户联系,请给我0。 对于每个匿名用户,请不要将它们分组为用户。并逐一展示它们。
到目前为止,这是我的代码,但下一步该怎么做?
SELECT m.fuuid, m.tuuid, m.anonymous, m.answered, u.uuid, u.username
FROM messages m, user u
WHERE
CASE
WHEN m.fuuid = '$uuid' THEN m.tuuid = u.uuid
WHEN m.tuuid = '$uuid' THEN m.fuuid = u.uuid
END
GROUP BY u.username
如果聊天中有未回复的消息,这不会给我收到的每条匿名收到的消息都是单一的和satus。
从上表中我想得到的是:
id:1& 3将是[用户:18,用户名:foo,已回答:1]
id:2& 4将是[user:2,username:bar,answers:0]
id:5将是[user:18,username:NULL,anonymous:1,answers:0]
如果回答了id 5,我将看不到它。
非常感谢任何帮助