[英]MySQL Select from category in table y where Count (of the category's product from another table) is greater than zero
我正在使用下面的代码获取类别列表
`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";
仅选择具有产品的类别
您可以使用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用如下所示替换所有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的弃用以及准备好的语句的重要性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.