从数据库动态导航

时间:2013-07-23 15:39:01

标签: php mysql navigation

我的数据库中有2个表。一个用于产品类别,一个用于子类别。

子类别表包含一个包含其父类别ID的字段

现在我尝试使用此信息创建导航,但我很难只从数据库中获取具有子类别的类别。

表“类别”:

catID | catName |活跃的|图像

表“子类别”:

catID | catName | parentCatID |活跃的|图像

到目前为止,我已经尝试过这个:

$sql = mysqli_query($con,'SELECT DISTINCT parentCatID FROM *****');
while($row = $sql->fetch_row()) {
  $rows[]=$row;
}                   
$res = join(',',$rows);
$sql2 = mysqli_query($con,"SELECT * FROM ***** WHERE categoryID IN '" . $res . "'");
while($results2 = mysqli_fetch_array($sql2)){
    echo $results2['categoryName'];
}

这不起作用,我看不到解决方案。 只需选择所有类别就足够了。但我不想要没有子类别的那些

2 个答案:

答案 0 :(得分:2)

以下查询应选择仅包含子类别的所有主要类别:

SELECT *, (SELECT count(*) FROM subCategories WHERE parentCatID = Categories.catID) as num FROM Categories WHERE num > 0

由于你还没有给我们提供表格或列名,我已经制作了它们。替换为您的实际表名和列名。

编辑现在,在表/列名称中添加了一个模式。

答案 1 :(得分:2)

我会使用INNER JOIN

SELECT *
FROM Categories
    INNER JOIN subCategories ON subCategories.parentCatID = Categories.catID AND subCategories.active = 1
WHERE Categories.active = 1
GROUP BY Categories.catID

编辑以反映您的结构,您需要更新" active = 1"根据您的设置方式