2014-03-27 3 views
-1

У меня есть две таблицы ПОЛЬЗОВАТЕЛИ И ГОЛОСЫ;MySql внутреннее соединение с заказом

i do внутреннее соединение с двумя таблицами с кодом ниже;

select *, count(*) as people_count from users inner join votes 

on users.id=votes.user_id and votes.choise_id=1 

group by users.country, votes.choise_id 

order by votes.time desc; 

USERS AND VOTES TABLES

я получить сильфона результат

я хочу последний комментарий, Erric, а не Том

result

вы можете запустить код из ниже ссылке

http://www.sqlfiddle.com/#!2/69cc95/3

спасибо за вашу помощь

С наилучшими пожеланиями

+0

Вы группирование по 'country' так что вы получите только один ряд для каждой страны. Если вы хотите все строки, удалите 'group by'. –

+0

Мне просто нужен только один ряд с последним комментарием, как показано ниже eric - us - 2 --- 1 --- im согласен с томом --- date ---- 2 –

ответ

0

я найти гуманного но я не уверен, если он достаточно быстро

select * , count(*) as people_count from 

(select * from votes v 
inner join users u 
on v.user_id=u.id 
where v.choise_id=1 
order by v.time desc 
) t 

group by t.country 

вы можете проверить снизу ссылки

http://www.sqlfiddle.com/#!2/69cc95/40

0

Если вы хотите один ряд с последним значением, то вы должны использовать not exists вместо group by:

select *, 
     (select count(*) from votes where v.choise_id = 1) as people_count 
from users u inner join 
    votes v 
    on u.id = v.user_id and v.choise_id = 1 
where not exists (select 1 
        from users u2 join 
         votes v2 
         u2.id = v2.user_id 
        where u2.country = u.country and 
         v2.choise_id = v.choise_id and 
         v2.time > v.time 
       ); 
+0

он дает people_count = 1, я также нужно узнать, сколько голосов есть. Вы можете увидеть свой код здесь http://www.sqlfiddle.com/#!2/69cc95/22 –

+0

спасибо за ваш блеск. я думаю, я нахожу какое-то решение и делиться им –

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