2013-12-19 4 views
0

У меня есть 3 таблицы,Получить количество валюты на MySQL

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 

Но результаты неправильные, не ожидаемый, что я делаю неправильно?

Спасибо заранее и извините, если вопрос немного noob.

ответ

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; 
+0

Omg man! ты гений! спасибо много, эта работа отлично, я знаю, что мне нужно узнать больше о sql-запросах, не рекомендовал ли вы какую-нибудь книгу или учебник? Ты лучший! – NewJsGuy

Смежные вопросы