【问题标题】:User "Categories" table as heading for "SubCategories"用户“类别”表作为“子类别”的标题
【发布时间】:2012-12-03 21:35:48
【问题描述】:

我不知道这是否可能... 但我需要创建一个 sql 查询,列出我的所有类别及其子类别。问题是类别和子类别存储在不同的表中。

数据库结构如下:TABLE NAME: "Categories", COLUMNS: "ID, Name"

表名:“子类别”。列:“ID、名称、Category_ID”。 category_ID 用于使用 ID 将每个子类别链接到其父类别。

现在我只有一个 sql 查询代码,它可以提取所有“类别”……我怎样才能让它在每个类别下显示一个子类别列表?

<?php
$catlist= mysql_query('SELECT * FROM categories WHERE hide = 0 ORDER BY `order` ASC')
or die(mysql_error());  
?>
<?php foreach ($catlist as $catitem): ?>
<h2 class="category"><?php echo $catitem['name']; ?></h2>
<?php endforeach; ?>
<?php ?>

【问题讨论】:

  • 我可能错了,但加入应该可以解决这个问题。

标签: php sql


【解决方案1】:

这将为您提供其余信息 - 然后您需要进行布局并取消重复的类别文本。

SELECT * 
FROM categories c, sub_categories s
WHERE c.hide = 0 
AND s.category_id = c.category_id
ORDER BY `order` ASC

【讨论】:

    【解决方案2】:

    您可以对子类别表使用连接。 http://dev.mysql.com/doc/refman/5.0/en/join.html

    但是,我建议不要在表级别区分顶级类别和子级别类别,而是将它们全部放在一个具有以下字段的表中:parent_id、left_id 和 right_id。基本上,这允许层次结构中无限深度的类别。可能需要对如何正确实施它进行一些研究,但到目前为止它更强大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多