【问题标题】:Query for post and comments all in one?查询帖子和评论合二为一?
【发布时间】:2011-08-29 01:28:16
【问题描述】:

我一直在阅读有关分层数据库结构的内容,并且想知道如何将它应用到我当前的代码中。目前,我正在查询所有帖子,然后在该查询的循环中,我对该帖子的所有 cmets 进行另一个查询。所以每个帖子都有一个额外的查询;这对我来说似乎效率低下。我的表结构:

posts.id、posts.userid、posts.text

cmets.id,cmets.postid,cmets.userid,cmets.text

我看到一些帖子,人们提到在一个查询中执行所有这些操作,其中返回的查询使用 sql 的 CONCAT() 在缩进 cmets 中添加空格。然后在 appcode 中检查空格并相应显示。关于查询我的数据样式的任何想法?

【问题讨论】:

    标签: php mysql hierarchical-data


    【解决方案1】:

    你可以连接任何你喜欢的字段,但是连接 cmets.text 行会很麻烦

    我通常做的是将帖子和 cmets 放在同一个表中: 帖子(postid、userid、text、parent_postid)

    当 parent_postid == 0 时,您知道它是否是帖子,并且您可以轻松获取同一“帖子”的所有帖子/cmets 我认为在大多数系统中是一种更常见的方式

    【讨论】:

    • 有趣。好吧,即使我有两张桌子,理论也是一样的;我可以 LEFT JOIN 加入 cmets 表并连接 cmets,这样我就知道它们是显示中的 cmets。编辑:这不会给你太多冗余数据(发布文本等)吗?
    • 当您 LEFT JOIN 时,您将从两个表中获取列 - 您将在所有行中获得所选帖子的数据
    • 正确。但我想知道这种方式是否比 2 个查询更好。我想在 1 个查询中这样做会更有效,不管
    猜你喜欢
    • 2021-03-14
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多