代码之家  ›  专栏  ›  技术社区  ›  joe

通知警报关闭sql php

  •  0
  • joe  · 技术社区  · 6 年前

    我正在创建一个基本的通知系统来提醒用户,他跟踪的用户已经创建了一个新帖子。

    用户

      id_user | name
        1       Max
        2       Joe
        3       Ed
        4       Tommy
    

    帖子

        id_post | id_user_post | posts
        1               2           hi
        2               2           hello
        3               2           how are you
        4               3           hey you
        5               2           how long
        6               1           whats up
        7               2           come on
    

    社区

      id_follower id_followed
        3           2
        3           1
        4           2
    

    在本例中,Ed(用户3)跟随Joe(2)和Max(1),他们都发布了6篇帖子。

      SELECT COUNT(*)
        FROM community c
         LEFT JOIN posts p ON p.id_user_post=c.id_followed
       WHERE c.id_follower=3 
    

    下面是页面中的内容

      Homepage header
       You have (6 new posts) > [click here to see]
    

    我的问题是如何在单击it后关闭通知警报(6篇新帖子)? 是否需要创建通知表?我是否需要在帖子中添加状态字段? 是否需要再次进行Sql查询?否则,该通知将永远出现。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Barmar    6 年前

    您应该添加 last_post_id 列到 community 桌子然后,您只能统计ID高于此值的帖子。

      SELECT COUNT(*)
        FROM community c
         LEFT JOIN posts p ON p.id_user_post=c.id_followed AND p.id_post > c.last_post_id
       WHERE c.id_follower=3 
    

    无论何时向用户显示状态,都会更新 last\u post\u id 至最高ID:

    UPDATE community AS c
    JOIN (SELECT id_user_post, MAX(id_post) AS id_post
          FROM posts
          GROUP BY id_user_post) AS p ON p.id_user_post=c.id_followed
    SET c.last_post_id = p.id_post
    WHERE c.id_follower = 3