获取mysql上的货币数量

时间:2013-12-19 23:54:29

标签: php mysql sql

我有3张桌子,

Table Country
---------------------
id_country |country |
---------------------
      1     Brazil
      2     Chile
      3     Colombia

Table Users
------------------------
id_country |colorNumber|
------------------------
      1          1
      1          2
      1          2
      1          3
      2          2
      2          4
      3          1
      3          4

Table Colors
---------------------
id_color | colorName|
---------------------
     1        Red
     2        Blue
     3        Fuschia
     4        Black

我想知道一个国家最挑选的颜色是什么

我做了类似的事情:

select color ,count(color), country as country from users group by (country) order by(color) desc

但结果是错误的,不是预期的,我做错了什么?

如果问题是一个小菜鸟,请提前致谢并抱歉。

1 个答案:

答案 0 :(得分:1)

以下查询可为您提供每个国家/地区的颜色计数:

select cc.country, c.colorName, count(*) as cnt
from users join
     colors
     on users.colorNmber = colors.id_color join
     countries cc
     on users.id_country = cc.id_country
group by cc.country, c.colorName;

你想要最受欢迎的一个。这是在MySQL中执行此操作的技巧:

select country,
       substring_index(group_concat(colorName order by cnt desc), ',', 1) as MostPopularColor
from (select cc.country, c.colorName, count(*) as cnt
      from users join
           colors
           on users.colorNmber = colors.id_color join
           countries cc
           on users.id_country = cc.id_country
      group by cc.country, c.colorName
     ) t
group by country;