2013-03-24 2 views
0
select id as ids from challenges where expire_date > today 

мне нужна цикл ее для умножения идентификаторов типа (Еогеаспа в PHP)
создать хранимую процедуру для многократного обновления запросов

foreach (ids) 

    update challenges set status = 'expired' where id = ids 

    update user_challenge set challenge_status = 'Expired' where challenge_status = 'Pending' and challenge_id = ids 
    update user_challenge set challenge_status = 'Failed' where challenge_status = 'Accepted' and challenge_id = ids 

end for each; 

может кто-нибудь, пожалуйста, создать хранимую процедуру или один запрос для выполнения этого, Спасибо

ответ

1

Ваш единственный запрос обновления в MySql может выглядеть следующим образом

UPDATE user_challenge u INNER JOIN 
     challenges c ON u.challenge_id = c.id 
    SET c.status = 'Expired', 
     u.challenge_status = CASE WHEN u.challenge_status = 'Pending' THEN 'Expired' 
           WHEN u.challenge_status = 'Accepted' THEN 'Failed' END 
WHERE c.expire_date < CURDATE() 

Вот SQLFiddle пример

Я считаю, что условие окончания срока, чтобы смысл должен быть expire_date < CURDATE() (то есть срок годности должен быть меньше текущей даты), которая находит свое отражение в запросе.

+0

@Abeer Раз Помогло ли это? Вам нужна дополнительная помощь по вашему вопросу? – peterm

0

Вы можете объявить курсор, используйте курсор Переберите результат из запроса

синтаксиса для T-SQL, но он должен быть похож на MySQL:

declare @id int 
declare @cursor cursor; 
set @cursor = cursor for select id as ids from challenges where expire_date > today 
open @cursor 
fetch next from @cursor into @id 
while(@@FETCH_STATUS = 0) 
begin 
    update challenges set status = 'expired' where id = @id 

    update user_challenge set challenge_status = 'Expired' where challenge_status = 'Pending' and challenge_id = @id 
    update user_challenge set challenge_status = 'Failed' where challenge_status = 'Accepted' and challenge_id = @id 

    fetch next from @cursor into @id 
end 
close @cursor 
deallocate @cursor 
Смежные вопросы