MYSQL将所有消息组合到用户

时间:2015-06-05 20:56:34

标签: php mysql

我的表格中有一个表'消息',其中存储了所有消息,并提供了所有必要的信息。

以下是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,我将看不到它。

非常感谢任何帮助

0 个答案:

没有答案