0

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

子类别表有一个字段保存其父类别 ID

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

表“类别”:

猫ID | 猫名 | 活跃 | 图片

表“子类别”:

猫ID | 猫名 | 父猫ID | 活跃 | 图片

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

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

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

4

2 回答 2

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”

于 2013-07-23T15:48:56.843 回答
2

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

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

因为你没有给我们表格或列名,所以我已经做了它们。替换为您的实际表名和列名。

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

于 2013-07-23T15:45:56.547 回答