[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите объеденить 2 запроса в 1
maxtor
Код
$res = sql_query("SELECT userid, COUNT(*) AS tnum FROM peers WHERE seeder = 'yes' GROUP BY userid") or sqlerr(__FILE__,__LINE__);
    if(mysql_num_rows($res) > 0)
        while($row = mysql_fetch_array($res))
            sql_query("UPDATE users SET bonus = bonus + ".round($row['tnum'] * $points_per_cleanup, 2)." WHERE users.id = ".$row['userid']) or sqlerr(__FILE__,__LINE__);


От такой конструкции генерируется большое количество запросов, помогите объединить в один. Пробовал так:
Код
UPDATE users SET bonus = bonus + ROUND(tnum * $points_per_cleanup,2) WHERE users.id = IN (SELECT userid, COUNT(*) AS tnum FROM peers WHERE seeder = 'yes' GROUP BY userid)

но выдалась ошибка, т.к. подзапрос должен возвращать всего один столбец... Существуют ли другие пути?



Спустя 1 день, 10 часов, 6 минут, 57 секунд (15.06.2008 - 02:05) Alchemist написал(а):
Код
UPDATE `users` INNER JOIN (
    SELECT `userid`, COUNT(*) AS `tnum`
    FROM `peers`
    WHERE `seeder` = 'yes'
    GROUP BY `userid`
) `tmp` USING(`userid`)
SET
    `users`.`bonus` = `users`.`bonus` + ROUND(`tmp`.`tnum` * ".$points_per_cleanup.", 2)
WHERE 1
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.