我正在为大学开发一个PHP应用程序,假装我向国家/地区购买和转售特定项目。 我有一个表格,其中包含交易ID和制作它们的国家/地区的名称。
我一直在尝试计算特定国家/地区名称在数据库表格中显示的次数,然后在网页上打印出一个表格,其中显示了每个国家/地区名称及其在表格中显示的次数,如下所示,但我无法在任何地方找到任何这类事物的例子,它们总是太不同而无法提供很多帮助。我还想通过最大到最小计数来订购表格,并且还能够限制使用单选按钮显示的国家数量(我已经开始工作)。
countryName | numberOfSales Belize | 10 Brazil | 6 Cameroon | 64 Colombia | 23 Costa Rica | 47
答案 0 :(得分:1)
您需要选择国家/地区和计数,然后按国家/地区分组。如果您想订购它,您也需要添加它。
SELECT
countryName,
count(*) as numberOfSales
FROM
sales
GROUP BY
countryName
ORDER BY
numberOfSales DESC
此查询在结果中将包含2列。国家/地区名称及其根据分组显示的次数。我们按国家/地区名称列对所有记录进行分组。在查询中,我们将列命名为numberOfSales,因此我们可以在订购时使用它,以便国家/地区在numberOfSales中从最大到最小的顺序。
答案 1 :(得分:1)
如果您的数据库中有两个表(在我的情况下是MySql),一个是存储不同国家/地区的表,另一个是销售/订单。
表countries
:
id INT
country VARHCAR(255)
表:sales
:
id INT
country_id INT
title VARCHAR(255)
这两个表之间存在1:多关系。一个国家可以有很多销售,但销售只能属于一个国家。
然后,您可以通过运行以下SQL查询来获取特定国家/地区的销售数量。 如果您想查找丹麦的销售数量,您可以这样做:
SELECT countries.country, COUNT(*) AS numberOfSales
FROM countries
JOIN sales
ON sales.country_id = countries.id
WHERE countries.country = 'denmark';
如果要查看每个国家/地区的销售总数,可以使用以下SQL查询:
SELECT countries.country, COUNT(*) AS numberOfSales
FROM countries
JOIN sales
ON sales.country_id = countries.id
GROUP BY countries.country;
此处GROUP BY
子句将获取countries
表中每个国家/地区的结果。如有必要,您可以添加LIMIT
子句。
我希望这不会让事情变得太复杂。你以后会用两张桌子来感谢我(我不知道你是否已经这样做过。如果你这样做,NICE)。
与在MySql中计算相同行相关:Count number of identical rows in MySQL with PHP
最好的问候。