我的数据库中有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'];
}
这不起作用,我看不到解决方案。 只需选择所有类别就足够了。但我不想要没有子类别的那些
答案 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"根据您的设置方式