Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не совсем правильно работает запрос 
:(
    Опции темы
Kuznec
Дата 20.3.2008, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


В поиске



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 13.4.2007
Где: КМА

Репутация: нет
Всего: нет



Есть запрос:

Код


UPDATE `sites` s, `site_pages` sp, `page_link` p, `seo_properties` se, `level` l, `pr_price` pr, `user_seo` u 
                SET p.old_price = IF
                (
                    (
                        (
                            (
                            SELECT `value` FROM `properties` WHERE `name` = 'threeshold'
                            ) >= 
                            (
                                (se.price*pr.price*l.price)/p.price - 1
                            )
                        ) 
                        AND ((se.price*pr.price*l.price)/p.price - 1) != 0
                    )
                    ,p.price,p.old_price
                ),
                p.status = IF
                (
                    (
                        (
                        SELECT `value` FROM `properties` WHERE `name` = 'threeshold'
                        ) >= 
                        (
                            (se.price*pr.price*l.price)/p.price - 1
                        ) AND ((se.price*pr.price*l.price)/p.price - 1) > 0
                    ),'9','2'
                ), 
                u.rating = u.rating - IF
                (
                    (
                        (TO_DAYS(NOW()) - TO_DAYS(p.date)) <= 30
                    ) AND 
                    (
                        (
                        SELECT `value` FROM `properties` WHERE `name` = 'threeshold'
                        ) >= 
                            (
                                (se.price*pr.price*l.price)/p.price - 1
                            )
                    ) AND 
                    (
                        (
                            (se.price*pr.price*l.price)/p.price - 1
                        ) > 0
                    ),30 - (TO_DAYS(NOW()) - TO_DAYS(p.date)),0
                ), 
                p.price = IF
                (
                    (
                    SELECT `value` FROM `properties` WHERE `name` = 'threeshold'
                    ) >= 
                    (
                        (se.price*pr.price*l.price)/p.price - 1
                    ),se.price*pr.price*l.price,p.price
                ) 
                WHERE s.id = '$_GET[id]' AND s.id_user = '$id_user' AND sp.id_site = '$_GET[id]' AND sp.level = l.level AND p.id_page = sp.id AND p.status = '2' AND sp.pr = pr.pr AND se.id_site = s.id AND l.id_site = s.id AND pr.id_site = s.id AND s.id_user = u.id



Проблема заключается в том, что значение поля u.rating обновляется только один раз, хотя по запросу должно обновиться при каждом обновлении поля p.status. Т.е., если в таблице обновлено 3 строки с полем p.status, то должно 3 раза происходить вычетание в поле u.rating, а происходит вычетание только 1 раз и которое должно быть последним. Почему так происходит, может кто разберётся и сможет помочь. Да, на условие проверки даты не смотреть, это условие соответствует для обновления.

Если есть возможность оптимизации кода, только буду благодарен за советы.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0869 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.