Здравствуйте! Есть база данных с таблицей юзеров. Нужно сделать, чтобы из таблицы можно было взять информацию о том сколько у человека подписчиков в каждый из семи прошлых дней. Например сегодня 7 вчера 8 позавчера 5 и так семь дней. Сначала хотел создать 7 полей (или одно поле с массивом) и по окончании дня, чтобы седьмое значение присваивалось шестому, шестое- пятому и.тд. Но как сделать, чтобы это происходило в автоматическом режиме? Или может быть какие-то другие варианты?
SELECT ... count() ... GROUP BY ... http://phpclub.ru/mysql/doc/group-by-functions.html http://phpclub.ru/mysql/doc/date-and-time-functions.html группируешь таблицу с юзерами по дате добавления, получаешь количество.
+1 к предыдущему каменту, хочу только уточнить: что такое "количество подписчиков", как оно задано? предположу, что если сделать поле типа счетчик подписчиков к таблице users, то нам никак не получить календарную статистику. надо какую-то отдельную таблицу, где бы присутствовала дата.
Это численное значение. Допустим, сегодня у меня было 7-> добавился один стало 8. Наступило "завтра" Теперь у меня за вчера 8 и сегодня пока 8 ->Дальше сегодняшнее значение может изменяться.Например 2 удалились стало 6. Это как-бы счётчик, значения которого сохраняются за прошедшие 7 дней.
ээ кажется тут надо немного от обратного идти .. делать 7 записей .. - в понедельник писать в 1 во вторник во 2 ... потом все записи суммировать и будет итог за 7 дней .. надо за 3 - суммируйте за 3 дня ..
Это допустим понятно. Таблица c полями д1 д2 д3 д4 д5 д6 д7 д7-сегодня. Но как сделать, чтобы каждый день д1 присваивалось значение д2 д2 присваивалось значение д3; д3 присваивалось значение д4; и т д д6 присваивалось значение д7; д7 присваивался 0;
Не годятся 7 (20, 1000) полей. Надо записи с календарной привязкой. Должно быть пофигу за какой период запрашивать, хоть за месяц, хоть за год. Такую гибкость даст только отдельная таблица.
Только хотел об этом написать ) Схема с полями/строками рухнет как только понадобится статистика за 2 недели.
Но мне так-то и не нужна статистика, больше чем за 7 дней. Но если это не будет сложно в реализации, то можно и вашим способом сделать, тоько обьясните пожалуйста поподробнее, как это сделать? Добавлено спустя 1 минуту 43 секунды: ид юзеров, подписанных на меня хранятся в таблице в массиве. Добавлено спустя 2 минуты 2 секунды: И число за сегодня как раз формируется в результате подсчёта числа элементов массива
Дело твоё, ты просто не представляешь с чем связался ))) Ты будешь городить костыль на костыле. Нет в базе массивов и вообще SQL придуман для работы со множествами, представленными в виде записей. Думай!!!
Сложно в реализации - это как раз твой вариант. Сложно именно в дальнейшей работе, системе костылей и подборок которые тебе придется городить, как верно заметил artoodetoo. Попробуй взять ручку, листочек и составить список всех необходимых задач которые должен выполнять твой скрипт, соответственно продумать под это дела схему БД, так что бы можно было делать необходимые выборки данных и при этом не было излишней избыточности данных. Абстрактный пример: тебе нужны списки рассылок. У тебя должна быть таблица с юзерами (имя, пароль, почта и т.д.), таблица рассылов (название, описание) и связующая таблица (ид юзера, ид рассыла, дата подписки). Теперь ты можешь сделать выборку по количеству подписчиков для любой рассылки за любой период, выбрать подписки юзера или подписавшихся на конкретную рассылку. Без костылей, одним запросом к базе.