2010-10-14 95 views
-2

我正在开发一个定制的论坛,并且想知道我是否能够就此问题获得其他一些想法和意见。自定义论坛查询

我想知道什么是最有效的MySQL查询来实现以下目标。

  1. 查找所有分类。这些会将他们的父母forum_id列为“0”。
  2. 查找所有论坛。这些将列出他们的父母forum_id作为类别ID。
  3. 查找所有子论坛。这些将列出他们的父母forum_id作为论坛ID。
  4. 查找每个论坛的帖子总数(包括他们的子论坛)。
  5. 查找每个论坛的主题总数(包括他们的子论坛)。
  6. 找到论坛(包括他们的子论坛)的最新帖子信息(时间,主题,海报)。

这可能吗?

+3

你试过了... SELECT? – Robus 2010-10-14 21:08:32

+0

你是在开玩笑吧? – 2010-10-14 21:09:19

+0

Begon巨魔。如果你不明白这个问题,请不要回答。 – Cory 2010-10-14 22:44:45

回答

1

随着所有的论坛软件已经创建,它是不可能的,滚动自己是最好的答案。如果不知道支持论坛的表格结构,除了说“是的,它们是可能的”之外,很难对查询提供建议。但搜索的最佳方式将涉及诸如Sphinx之类的内容。

+0

我知道表结构如何工作。我目前得到了该脚本的工作。我只是想弄清楚是否有更有效的方式去做。目前我使用SmartyPHP作为模板系统,我在模板中使用嵌套的foreach,并使用嵌套数组生成论坛结构。 $ smarty-> assign('forums',array('category',array('forum',array('subforum'))); – Cory 2010-10-14 22:52:18

1

您需要更充分地将您的查询设计与应用程序(和表)设计分开。您在此列出(至少)六个查询,其中大部分将由ORM理想地生成。

我还可以看到你可能会陷入最常见的论坛软件错误的牺牲品:不可扩展的表格设计。大多数论坛软件都会存储与他们的父帖子,主题和论坛相关的帖子。这意味着每个线程的查询数量与线程深度成正比。由于这个限制,我见过论坛软件死掉。存储线程的最有效方法是nested set model

这引出了我的下一个问题:你想通过编写论坛软件来实现什么?你是否需要论坛?为什么不安装其中的一个实现(尽管存在缺陷)?或者你在学习之后?或者需要论坛软件,它必须在内部编写(这是不寻常的:大多数军团会购买一些东西,而不是那样做)?

+0

感谢您的回复。 。我实际上开发了旧的vBulletin的mod。我不喜欢新的vBulletin和公司的发展方向,尽管一些老开发者创建了一个新的论坛 我对设计很挑剔我非常喜欢旧的IPB布局。我觉得他们是最好的组织和最好看的模板。 – Cory 2010-10-14 23:00:09