Помогите с slq запросом.

stifler_x
На сайте с 19.06.2008
Offline
193
623

Есть две таблицы, users и data.

В таблицу users занесены данные о пользователе, его пароль емайл и другие поля, но главное поле это rating. Его и пытаюсь обновлять по крону. Первичный ключ user_id.

В таблицу data заносятся все посты пользователей. В ней тоже есть user = user_id, по которому идентифицируется пользователь, и поле post_rating, в котором хранится рейтинг данного поста.

Задача:

Надо сделать апдейт таблицы users колонки rating, суммой данных колонки post_rating с таблицы data. Идентификаторы пользователей одинаковы в обеих таблицах.

Prior
На сайте с 03.03.2008
Offline
194
#1

Одним запросом? Первое, что приходит на ум - простой цикл по таблице пользователей с запросом на обновление каждого.

Ответы на вопрос - https://answers.net.pl
orphelin
На сайте с 02.07.2006
Offline
261
#2

что-то вроде в цикле по всем пользователям

UPDATE `users` SET VALUES `rating`=(SELECT SUM(`post_rating`) FROM `data` WHERE `user`='$id') WHERE `user_id`='$id'

orphelin добавил 26.01.2010 в 04:04

опередили немного..

stifler_x
На сайте с 19.06.2008
Offline
193
#3

да в цикле... забыл сказать ;)

Сначала выборка всех юзеров, а потом в цикле по каждому...

orphelin, я так и делал, но не обновляет подобный запрос..

Не знаю в чем проблема...

Ошибки при этом нет.

edogs software
На сайте с 15.12.2005
Offline
775
#4
stifler_x:
да в цикле... забыл сказать ;)
Сначала выборка всех юзеров, а потом в цикле по каждому...
orphelin, я так и делал, но не обновляет подобный запрос..
Не знаю в чем проблема...
Ошибки при этом нет.

Если нет ошибки, то выводите запрос на экран и если не видите в нем ошибки, то пихаете его в пхпмайадмин и наблюдаете результат.

orphelin:
что-то вроде в цикле по всем пользователям
UPDATE `users` SET VALUES `rating`=(SELECT SUM(`post_rating`) FROM `data` WHERE `user`='$id') WHERE `user_id`='$id'

orphelin добавил 26.01.2010 в 04:04
опередили немного..

В php цикле-то зачем? Все делается 1 запросом типа такого

UPDATE users` SET `rating`=(SELECT SUM(`post_rating`) FROM `data` WHERE users.user_id=data.user_id)

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
[Удален]
#5

kakoi ujas .. :)

stifler_x
На сайте с 19.06.2008
Offline
193
#6
bearman:
kakoi ujas ..

УГУ... Тем более если всю жизнь занимался химией 😂

Всем спасибо.

bearman:
UPDATE users` SET `rating`=(SELECT SUM(`post_rating`) FROM `data` WHERE users.user_id=data.user_id)

Спасибо особенное... Именно то, что надо...

[Удален]
#7
stifler_x:
УГУ... Тем более если всю жизнь занимался химией

я физик)

бывший физик, несостоявшийся)

bearman добавил 26.01.2010 в 07:08

edogs:
UPDATE users` SET `rating`=(SELECT SUM(`post_rating`) FROM `data` WHERE users.user_id=data.user_id)

не возникает и тут "foreach" ?

orphelin
На сайте с 02.07.2006
Offline
261
#8
bearman:
не возникает и тут "foreach" ?

не возникает

[Удален]
#9

orphelin, вы уверены? :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий