按 SQL/PHP 中的多列分组,其中两列可以包含相同的数据
group by multiple columns in SQL/PHP, where both columns can include the same data
我在 php/mySQL 中遇到了一个挑战,我找不到任何其他示例,并且证明是一个挑战。
我有一个 table,它有 "category" 和一个 "subcategory" 列。两者可以包含相同的数据,也可以为空,例如:
--------------------------
| category | subcategory |
--------------------------
| blue | |
| blue | green |
| green | red |
| yellow | red |
| red | |
--------------------------
我想对这些结果进行分组和过滤,以显示所有使用类别的简单列表,例如:
blue (2)
red (3)
green (2)
yellow (1)
我可以按一列进行分组和排序没问题,但看不到包括两列的方法。
SELECT category,subcategory FROM table GROUP BY category,subcategory
我在网上看到的所有示例都涉及按两列分组,其中列不同并且包含不同的数据,例如:名字,姓氏,所以我认为这不是重复!
在此先感谢您对此的任何想法或帮助!
编辑以向@bang 显示当前代码,按照以下评论:
$query = "SELECT category, count(*) FROM ( SELECT category from ae_test UNION ALL SELECT subcategory as 'category' from ae_test ) as t GROUP BY category";
$result = mysql_query($query) or die (mysql_error());
while ($row = mysql_fetch_array($result)) {
extract($row);
echo "$category ($count)<br />\n";
}
然后试试这个:
SELECT category, count(*)
FROM (
SELECT category from table
UNION ALL
SELECT subcategory as 'category' from table
) as t GROUP BY category;
第一个 select 获取您的类别,第二个获取您的子类别。
我使用 UNION ALL 来获取所有数据,即使它们是重复的。
在你的 php 中请不要使用提取物 :
$query = "SELECT category, count(*) FROM ( SELECT category from ae_test UNION ALL SELECT subcategory as 'category' from ae_test ) as t GROUP BY category";
$result = mysql_query($query) or die (mysql_error());
while ($row = mysql_fetch_array($result)) {
echo "$row['category'] ($row['count(*)'])<br />\n";
}
我在 php/mySQL 中遇到了一个挑战,我找不到任何其他示例,并且证明是一个挑战。
我有一个 table,它有 "category" 和一个 "subcategory" 列。两者可以包含相同的数据,也可以为空,例如:
--------------------------
| category | subcategory |
--------------------------
| blue | |
| blue | green |
| green | red |
| yellow | red |
| red | |
--------------------------
我想对这些结果进行分组和过滤,以显示所有使用类别的简单列表,例如:
blue (2)
red (3)
green (2)
yellow (1)
我可以按一列进行分组和排序没问题,但看不到包括两列的方法。
SELECT category,subcategory FROM table GROUP BY category,subcategory
我在网上看到的所有示例都涉及按两列分组,其中列不同并且包含不同的数据,例如:名字,姓氏,所以我认为这不是重复!
在此先感谢您对此的任何想法或帮助!
编辑以向@bang 显示当前代码,按照以下评论:
$query = "SELECT category, count(*) FROM ( SELECT category from ae_test UNION ALL SELECT subcategory as 'category' from ae_test ) as t GROUP BY category";
$result = mysql_query($query) or die (mysql_error());
while ($row = mysql_fetch_array($result)) {
extract($row);
echo "$category ($count)<br />\n";
}
然后试试这个:
SELECT category, count(*)
FROM (
SELECT category from table
UNION ALL
SELECT subcategory as 'category' from table
) as t GROUP BY category;
第一个 select 获取您的类别,第二个获取您的子类别。
我使用 UNION ALL 来获取所有数据,即使它们是重复的。
在你的 php 中请不要使用提取物 :
$query = "SELECT category, count(*) FROM ( SELECT category from ae_test UNION ALL SELECT subcategory as 'category' from ae_test ) as t GROUP BY category";
$result = mysql_query($query) or die (mysql_error());
while ($row = mysql_fetch_array($result)) {
echo "$row['category'] ($row['count(*)'])<br />\n";
}