我使用下面的代码获取类别列表
`mysql_select_db($database_localhost, $localhost);
$query_category = "SELECT category, categoryID FROM categories";
$category = mysql_query($query_category, $localhost) or die(mysql_error());
$row_category = mysql_fetch_assoc($category);`
然后我使用do while代码列出类别:在代码中我计算该类别下的产品数量
<?php do { ?>
<li><?php echo $row_category['category']; ?>"
<span class="badge pull-right"><?php
$cadid = $row_category['categoryID'];
$resultcatd = mysql_query("SELECT categoryID FROM products WHERE categoryID=$cadid ");
$rowcatd = mysql_num_rows($resultcatd);
echo $rowcatd;
?> </span>
</li>
<?php } while ($row_category = mysql_fetch_assoc($category)); ?>
现在我不想要显示零产品的类别:是否有人更好地修改代码
$query_category = "SELECT category, categoryID FROM categories";
仅选择包含产品的类别
答案 0 :(得分:1)
您可以使用EXISTS
:
SELECT category, categoryID
FROM categories AS c
WHERE EXISTS (SELECT 1
FROM products AS p
WHERE p.categoryID = c.categoryID )
或INNER JOIN
:
SELECT DISTINCT category, categoryID
FROM categories AS c
INNER JOIN products AS p ON p.categoryID = c.categoryID
或IN
运营商:
SELECT category, categoryID
FROM categories
WHERE categoryID IN (SELECT categoryID FROM products)
答案 1 :(得分:1)
1用以下内容替换所有SQL:
$query = "
SELECT c.category
, c.categoryID
, COUNT(*) total
FROM categories c
JOIN products p
ON p.categoryID = c.categoryID
GROUP
BY c.category_id;
";
$result = mysql_query($query);
2请参阅关于PHP的mysql_ API的弃用以及预准备语句的重要性。