
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.03.2015, 14:14:32
|
|||
|---|---|---|---|
|
|||
Циклы, выборки, запросы |
|||
|
#18+
Всем привет. В процессе работы возникла задача, для решения которой у меня не хватает знаний. работаю с mysql (pdo) + php таблица users_table - пару десятков тысяч строк. user_id - уникальный ключ. user_rate - число, о нем ниже user_id user_name user_rate1Вася150.12Коля16.6......... таблица events_table (event_id, user_id) - уникальный ключ event_rate - рейтинг каждого event event_id user_id event_rate event_date111.51426197174121.61426197174131.31426197174210.51426197174............ Посчитать user_rate для каждого юзера. user_rate равняется сумме event_rate из выборки. Выборка формируется из events_table WHERE event_date>определенной_дате LIMIT 100 Решение на php 1. Получаем список всех юзеров. 2. Пробегаем циклом через массив и для каждого юзера делаем запрос вида Код: plsql 1. 2. 3. 4. 5. Результат закидываем в array_sum($result) Сумму записываем в таблицу users_table в колонку user_rate Второй шаг можно оптимизировать, записывая не для каждого юзера, а после окончания всех вичислений записать всё сразу. Но такой путь мне показался неправильным. По сути, мы берем данные. Обрабатываем их. Записываем обратно. Т.е возможно задачу можно решить совсем без php - исключительно средствами mysql, но вот здесь и возникает вакуум знаний :) Прошу помощи у знающих ребят. Нужно знать, 1. можно ли решить поставленную задачу 2. ткните носом - что нужно для этого почитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2015, 14:20:37
|
|||
|---|---|---|---|
Циклы, выборки, запросы |
|||
|
#18+
yazonnile, эту задачу НУЖНО решать запросом или хранимой процедурой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2015, 14:26:00
|
|||
|---|---|---|---|
|
|||
Циклы, выборки, запросы |
|||
|
#18+
MasterZivyazonnile, эту задачу НУЖНО решать запросом или хранимой процедурой. Да. Теперь уверен в этом. Но знаний не прибавилось) К примеру я могу написать для каждого юзера нечто вроде Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Как это запихнуть в запрос с UPDATE для каждого юзера? Цикл какой-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2015, 14:27:33
|
|||
|---|---|---|---|
|
|||
Циклы, выборки, запросы |
|||
|
#18+
Пошел гуглить процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2015, 14:50:18
|
|||
|---|---|---|---|
Циклы, выборки, запросы |
|||
|
#18+
yazonnileКак это запихнуть в запрос с UPDATE для каждого юзера?Не для каждого, а для всех сразу. Забудь слово "циклы". И в процедуры не лезь - рано тебе. Всё делается ОДНИМ несложным запросом - ссылка на документацию дана выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2015, 15:38:28
|
|||
|---|---|---|---|
|
|||
Циклы, выборки, запросы |
|||
|
#18+
Akina, я тоже знаю, что ответ в документации есть, там все сть. Но я не смог его найти. Причины выше. Поэтому попросил помощи, и к сожалению ссылки на документации по update мало. Даже если там ответ - я его не смог найти. AkinaВсё делается ОДНИМ несложным запросом - ссылка на документацию дана выше. Использование цикла подсказивает логика функционального программирования. Взать список юзеров. И по каждому выполнить обработку. Вполне допускаю, что в sql такая логика не всегда верна. Если это делается одним запросом, тем более простым - подскажите, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2015, 16:01:15
|
|||
|---|---|---|---|
Циклы, выборки, запросы |
|||
|
#18+
yazonnileИспользование цикла подсказивает логика функционального программирования. Взать список юзеров. И по каждому выполнить обработку. Вполне допускаю, что в sql такая логика не всегда верна. Для SQL эта логика в корне неверна. Абсолютно. yazonnileЕсли это делается одним запросом, тем более простым - подскажите, пожалуйста. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2015, 16:27:02
|
|||
|---|---|---|---|
|
|||
Циклы, выборки, запросы |
|||
|
#18+
Akina Код: sql 1. 2. 3. 4. 5. 6. 7. Не поверите, но я до этого даже сам дошел, и был рад, что мысль совпала с вашей. Спасибо :) Но здесь проблема небольшая. Там где идет выборка с группировкой не хватает условия и лимита. Условие, к примеру, добавить не сложно. А как добавить лимит на event_rate для каждого user_id отдельно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.03.2015, 16:30:42
|
|||
|---|---|---|---|
Циклы, выборки, запросы |
|||
|
#18+
yazonnileкак добавить лимит на event_rate для каждого user_id отдельно? FAQ: Нумерация строк и другие вопросы про использование переменных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1833432]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 331ms |

| 0 / 0 |
