保存查询和优化数据库

时间:2012-02-12 09:37:37

标签: mysql

我正在创建一个脚本,旨在通过选择一个类别,子类别和另一个子类,或者通过选择所有内容来查询帖子列表。

问题在于,当我想要显示“所有”帖子时,我需要为每个帖子创建3个查询(将类别编号转换为名称)。

有没有办法让它更优化?

表格结构:

帖子:

  • id(int)
  • main_cat(主要类别)(int)
  • sub_cat(子类别)(int)
  • sub_sub_cat(sub to the sub)(int)
  • description(varchar)

main_cat:

  • id(int)
  • name(varchar)

sub_cat:

  • id(int)
  • relation(int)(main_cat的id)
  • name(varchar)

sub_sub_cat:

  • id(int)
  • relation(int)(sub_cat的id)
  • name(varchar)

提前致谢。

3 个答案:

答案 0 :(得分:2)

我会从阅读JOIN:http://mysqljoin.com/joins/inner-join-tutorial/

开始解决您的问题

一旦理解了这个概念,你的问题就会自行解决。

不提供任何解决方案代码,因为问题看起来像是一项家庭作业。

答案 1 :(得分:1)

取而代之的是获取所有类别名称,ID并将它们存储到数组中。类似于[id] => category_name。
和其他查询来获取父子,使用连接。

答案 2 :(得分:1)

类似的东西:

SELECT posts.description, main_cat.name AS cat_name, sub_cat.name AS sub_name, sub_sub_cat.name AS sub_sub_name FROM posts LEFT JOIN main_cat ON main_cat.id=posts.main_cat LEFT JOIN sub_cat ON sub_cat.id=posts.sub_cat LEFT JOIN sub_sub_cat ON sub_sub_cat.id=posts.sub_sub_cat

会这样做,但这是未经测试的 - 如果它有用,请将其标记为已接受 - 拥有38%的录取率不会给你太多帮助!

如果您要使用数据库,JOIN和LEFT JOIN对于掌握数据非常有用!