【问题标题】:how to retrieve notification from database with diffrent types of notification如何使用不同类型的通知从数据库中检索通知
【发布时间】:2023-03-20 23:10:02
【问题描述】:

我正在开发一个通知系统,就像 facebook 一样。

我的数据库结构是

我已经制作了 type_id 例如通知类型。 [墙cmets,墙柱等]

问题是我如何从通知中检索数据,例如使用时间戳我可以根据更新的日期或时间获取数据,但仍然在获取类型之后。如何将类型与显示结果(如 facebook 中的随机通知)所需的其他表格相匹配。任何人都可以帮助我进行数据库查询。

喜欢类型

墙评论——我必须从墙评论和通知表中检索数据

墙帖——我必须从墙帖和通知表中检索数据

以后如何根据时间戳将它们组合起来,然后按照这样的方式得到结果

例如

rahul 2 小时前在你的墙上张贴

ritu 1 小时前评论了您的帖子

谁能帮忙??

【问题讨论】:

    标签: php mysql notifications


    【解决方案1】:

    我不会尝试在一个查询中完成所有操作。我宁愿做几个小的简单查询,针对每种类型的实体(墙贴、评论等)一个,然后将结果组装成 PHP 代码并发送到客户端。

    不要使事情过于复杂,复杂性已经很多了。 :-)

    查询示例:

    SELECT p.*, n.*
    FROM notifications n
    INNER JOIN wall_posts p ON p.id = n.item_id
    WHERE n.type_id = 'wall_post' AND n.is_seen = 0;
    ORDER BY time_stamp DESC
    LIMIT 10;
    
    SELECT c.*, n.*
    FROM notifications n
    INNER JOIN wall_comments c ON c.id = n.item_id
    WHERE n.type_id = 'wall_post' AND n.is_seen = 0;
    ORDER BY time_stamp DESC
    LIMIT 10;
    

    【讨论】:

    • 是的,我尝试了同样的事情,我做了几个小查询,但问题仍然是,当所有“类型”查询都进行时,我将如何根据时间戳向客户端显示它们数据库并按照触发方式排列它们???感谢回复@sergio
    • 嗯,您选择的是时间戳,对吧?然后在您的 PHP 代码中对它们进行排序并发送给客户端。
    • 假设我通过对所有人进行单独查询来获得所有类型的数据,现在我想根据数据库中的时间戳在 div 上显示它们。现在我该怎么做,我只在查询中使用时间戳,例如 ORDER BY time_stamp DESC ,现在当所有查询都已经执行时,如何根据数据库中的时间戳组合它并显示给客户端???
    • @SakshiSharma:您可以使用该主题的代码:stackoverflow.com/questions/2699086/…
    • 感谢您的帮助,今天将尝试告诉结果,现在我不再那么困惑了,感谢您的帮助:)
    【解决方案2】:

    这取决于数据在其他表中的结构。如果它是相似的(或者至少可以以类似的方式总结),那么你可以使用这样的 UNION

    SELECT * FROM
      ( 
        SELECT date,title,summary FROM notifications 
          INNER JOIN wall_comments ON (item_id=item_id AND type_id='wall_comments')
          WHERE user_id=X
      ) UNION
      ( 
        SELECT date,title,summary FROM notifications 
          INNER JOIN wall_posts ON (item_id=item_id AND type_id='wall_posts')
          WHERE user_id=X
      ) UNION 
      ( etc..
      )
    ORDER BY date desc
    

    您可能希望将其他子句放入您的 WHERE 子句中以限制子查询。如果您确实发现性能问题,您可能希望将数据非规范化到一个包含相关信息的表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      相关资源
      最近更新 更多