Най-често срещан резултат от SQL, извеждане

heytar

Registered
Здравейте, имам таблица с следните полета:
id, date_addon,ip,strike

В нея записвам всеки уникален потребител посетил дадена страница (strike) и искам да изведа 20-те най-посещавани страници за последните 24 часа.
PHP:
$up = time() + 86400;
$down = time() - 86400;
[sql]"SELECT COUNT(id) AS return FROM `visit` WHERE date_addon < {$up} AND date_addon> {$down}" [/sql]

Това успях да направя.[/php]
 
Добре, може да пробваш да ги групираш по страница(strike), а и не си описал много ясно. Това Id за какво го ползваш, то ако е уникално не може да count-ваш по него.Date_addon също не ми става много ясно за какво го ползваш ?
 
Можеш да направиш вътрешно сортиране от рода /ако съм объркал нещо може и да не тръгне от първия опит :)/

SELECT strike, cnt FROM (
SELECT strike, COUNT(strike) as cnt FROM `visit` WHERE date_addon <= {$up} AND date_addon> {$down}" GROUP BY strike
) as sr
ORDER BY cnt DESC
LIMIT 20

ПП: задължително това strike трябва да ти е индексирано поле.
 
lamerko каза:
Можеш да направиш вътрешно сортиране от рода /ако съм объркал нещо може и да не тръгне от първия опит :)/

SELECT strike, cnt FROM (
SELECT strike, COUNT(strike) as cnt FROM `visit` WHERE date_addon <= {$up} AND date_addon> {$down}" GROUP BY strike
) as sr
ORDER BY cnt DESC
LIMIT 20

ПП: задължително това strike трябва да ти е индексирано поле.
PHP:
"SELECT COUNT(strike) as num , strike FROM `visit` WHERE date_addon < {$up} AND date_addon > {$down} GROUP BY strike ORDER BY COUNT(strike) DESC LIMIT 20"
 

Back
Горе