PHP, MySQL - 2 вопроса
У меня два вопроса:
1. В таблице базы mysql`а есть поля: id, year, news.
примерный вид записей:
1 | 2004 | text
2 | 2004 | text
3 | 2005 | text
4 | 2005 | text
5 | 2006 | text
Как видно в поле year разные года добавления записей в табличку. Я не могу сообразить, как сделать выборку из таблички, что бы показать какие года присутвуют в ней (типа архив по годам). Вот пример:
2006
2005
2004
2. Просто теоретический вопрос, это так, взбрело в голову, не могу разобраться :)
Сам вопрос: Каким образом определяется позиционирование в системе рейтингов например LiveInternet.ru (http://www.liveinternet.ru/?novgorod.ru : novgorod.ru занимает 28 место в категории «Города и регионы».) Как это определяется ?
Всем спасибо за проявленный интерес к теме.
2. по количеству посетителей, вроде бы
1. select distinct `year` from `tbl_name`
2. по количеству посетителей, вроде бы
Благодарю за ответ :)
Насчет 2-го вопроса: Как именно определяется, что стоит именно на 28-м месте ?
Как именно определяется, что стоит именно на 28-м месте ?
Это наверное каждый сам по своему пишет...
Предполагаю, что они подсчитывают ежесуточно все клики, суммируют и записывают по каждому аккаунту в сводную таблицу. Соответственно, ранжируют.
Насчет 2-го вопроса: Как именно определяется, что стоит именно на 28-м месте ?
Дошла суть вопроса :D
Я бы сделал временную таблицу с представлением выборки из сводной таблицы, и ключевым полем просто автоинкремент. А уж из неё выбрал бы нужный идентификатор и в автоиннкрементном поле была бы как раз позиция в рейтинге.
хм, интересно, интересно 8)
Т.е., дано нам, скажем, идентификатор аккаунта - 1000-лохматый, которые лежат в таблице accounts.id.
Пишем такую беду:
CREATE TEMPORARY TABLE tmp
(a INT AUTO_INCREMENT, PRIMARY KEY(a))
SELECT id FROM accounts ORDER BY <счётчик> DESC
И сразу выбираем его из этой таблы:
SELECT a FROM tmp WHERE id = 1000-лохматый
Если написать так:
SELECT FROM `Counters`(`ID`) WHERE `Count` > *название_поля_посетителей_нужного_сайта*
и куда-то(я точно не помню) поставить эту функцию то получим на каком месте сайт - 1
В MySQL есть функция count(), которая определяет сколько записей подходятт по запросу
Если написать так:
SELECT FROM `Counters`(`ID`) WHERE `Count` > *название_поля_посетителей_нужного_сайта*
и куда-то(я точно не помню) поставить эту функцию то получим на каком месте сайт - 1
Не прокатит.
Допустим, есть таблица:
account | counter
------------------
1 | 3000
2 | 2000
3 | 7000
etc.,
то тут никак COUNT'ом не выберешь. Можно, конечно, загнать сортированный по counter результ в скалярный массив и тупо взять ключ, как знаение позиции... Но, уж больно много геммора...
Можно, конечно, загнать сортированный по counter результ в скалярный массив и тупо взять ключ, как знаение позиции... Но, уж больно много геммора....
Получается что и MySQL будет сортировать и прога?