如何从mysql中检索出检索到的数据图表?

时间:2015-06-18 05:33:08

标签: mysql charts

我想根据名为usercountry的两个表格的数据生成图表,以显示每个国家/地区的用户数量。

user中,这些是相关字段

user_id: INT , country_id: INT

country中,这些是相关字段

country_id: INT , country_name: VARCHAR(45)

执行SELECT country_id, COUNT( * ) FROM user GROUP BY country_id时,结果就是这样。 COUNT(*)列显示了每个国家/地区的用户数量,其中包含ID为1和2的2个国家/地区。我想在此结果中生成一个图表,而不是在一个国家/地区上显示country_id轴,我想要检索country_name。我该怎么做?

+------+--------+--------+
| country_id | COUNT(*)  |  
+------+--------+--------+
|    1       |  100      |  
|    2       |  157      |
|    3       |  99       |
+------+--------+--------+

4 个答案:

答案 0 :(得分:1)

简单连接就足够了

SELECT c.country_name, COUNT(u.user_id) as user_count
FROM country c
INNER JOIN users u ON c.country_id = u.country_id
GROUP BY c.country_name

对于图表,我建议Highcharts。您只需要将数据导出为JSON,例如

series: [{
    data: [
        ['USA', 100],
        ['Australia', 157],
        ['New Zealand', 99]
    ]
}]

JSFiddle

答案 1 :(得分:0)

尝试此查询

select a.country_id, a.country_name,b.totaluser  from country a
join(
SELECT country_id, COUNT( * ) as totaluser FROM user GROUP BY country_id) b on a.country_id=b.country_id

答案 2 :(得分:0)

SELECT a.name, COUNT(b.user_id) as From_Each_Country
FROM country a INNER JOIN Users b
INNER JOIN users u 
ON a.country_id = b.country_id
GROUP BY a.name

答案 3 :(得分:-1)

当您说"生成图表"时,我不知道您的意思,但要将国家/地区名称与您可能认为是加入的计数相关联

SELECT country.country_name, COUNT( user.user_id ) FROM user 
join country on user.country_id=country.country_id
GROUP BY country.country_name 

我没有您的数据,所以我无法尝试。

编辑

抱歉,这是一个错字......