Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > [MySQl] голосование в реальном времени, ретйинги


Автор: gcc 10.6.2009, 01:54
как сделать голосование в реальном времени?

я создал таблицу и туда записывается тот кто голосовал

id | id_user | id_co | ip | time

id_co - это элемент за который проголосовали за какое-то время

1) как теперь отсортировать по убывания, сделать ретйинг за какое-то время?

2) есть какой-то id_co как узнать его позицию в данном ретйинге?

=============================

второй пункт раньше делал так:
(только там было не в рейльном времени, а просто прибавлялись записывались голоса)

Код

id | name | pole|
------------------|
1    a       20
2    b       30    |
3    c       10
----------------- |


Код

SELECT count(*)+1 FROM `table` AS t1
LEFT JOIN `table` AS t2
ON t1.id=$id AND t1.pole < t2.pole
where t2.id IS NOT NULL


Код

select tmp.position
from (select row_number() over(order by pole desc) as position, id from rating) as tmp
where tmp.id = 2


Код

select count(*) +1 position from table where pole > (select pole from table where id=2)

Автор: gcc 13.6.2009, 23:40

1
Код

SELECT rownum FROM (SELECT @rownum:=@rownum+1 rownum, id_co FROM (SELECT @rownum:=0) r, 
(SELECT count(*) cnt, id_co FROM tablename GROUP BY id_co ORDER BY cnt DESC) t1) t2 WHERE t2.id_co=id_того,что нужно 


2
Код

 SELECT count(*) cnt, id_co FROM tablename WHERE  time BETWEEN ... AND .... GROUP BY id_co ORDER BY cnt DESC 


посдкажите что это значит @rownum:=@rownum+1    (SELECT @rownum:=0)   это массив?

можно ли это написать по проще? 
я использую модуль абстракции который дает чтобы одни запросы работали сразу на нескольких СУБД sqlitem mysql, pgsql

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)