我不知道这是否可行...... 但我需要创建一个SQL查询,列出我的所有类别及其子类别。问题是类别和子类别存储在单独的表中。
数据库结构如下:TABLE NAME:“Categories”,COLUMNS:“ID,Name”
表名:“Sub_Categories”。 COLUMNS:“ID,Name,Category_ID”。 category_ID用于使用ID's将每个子类别链接到其父类别。
现在我只有一个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 ?>
答案 0 :(得分:1)
这将为您提供其余信息 - 然后您需要进行布局并禁止重复的类别文本。
SELECT *
FROM categories c, sub_categories s
WHERE c.hide = 0
AND s.category_id = c.category_id
ORDER BY `order` ASC
答案 1 :(得分:0)
您可以在子类别表中使用联接。 http://dev.mysql.com/doc/refman/5.0/en/join.html
但是,我建议不要在表级别区分顶级和子级别类别,而是将它们全部放在一个包含以下字段的表中:parent_id,left_id和right_id。基本上,这允许层次结构内的无限深度的类别。可能需要对如何正确实现它进行一些研究,但到目前为止它更强大。