数据库中的动态导航


Dynamic navigation from database

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

子类别表有一个字段,其中包含其父类别ID

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

表格"类别":

catID|catName|active|image

表格"子类别":

catID|catName|parentCatID|active|image

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

$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'];
}

这行不通,我看不到解决办法。只需选择所有类别就足够简单了。但我不想要那些没有子类别的

我会使用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"

以下查询应选择所有只有子类别的主类别:

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

由于您没有给我们提供表名或列名,所以我制作了它们。替换为实际的表名和列名。

EDIT添加到表/列名中,现在可以使用架构。