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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как обновить информацию в 4 строках одновременно 
:(
    Опции темы
supervladislav
Дата 15.5.2009, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

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



незнаю может не очень ясно выяснился в заголовке ,подскажите как выполнить запрос ,такой который бы просматривал на условие четыре строки и в случае если бы 
все четыре удволетворяли условию )))выполнялся бы запрос ))сразу же хотелось спросить 
нормально ли 
использовать оператор and 
Код

UPDATE sh_game SET balans=balans-15,sertifikat=2 WHERE (login='2222' and login='jamaica' and login='Hopsua' and login='Vovaliv') and sertifikat=1 and balans>=15 and category=1


Это сообщение отредактировал(а) supervladislav - 15.5.2009, 01:41
PM MAIL   Вверх
lelik133
Дата 15.5.2009, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

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



запрос у вас не верен. вы пробовали его выполнить? как одна строка может иметь в поле login сразу 4 значения?
Код

UPDATE sh_game SET balans=balans-15,sertifikat=2 WHERE login in ('2222', 'jamaica','Hopsua','Vovaliv') and sertifikat=1 and balans>=15 and category=1

в этом случае обновятся те строки sertifikat=1 and balans>=15 and category=1.
Выяснить одним запросом чтобы все 4 строки удовлетворяли условию и только тогда их обновлять одним запросом думаю не получится.

PM ICQ   Вверх
Akina
Дата 15.5.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(lelik133 @  15.5.2009,  09:15 Найти цитируемый пост)
Выяснить одним запросом чтобы все 4 строки удовлетворяли условию и только тогда их обновлять одним запросом думаю не получится.

Это не так - можно связать 4 копии таблицы по критерию и при удовлетворении условий отбора апдейтить.

Цитата(supervladislav @  15.5.2009,  02:40 Найти цитируемый пост)
запрос ,такой который бы просматривал на условие четыре строки и в случае если бы 
все четыре удволетворяли условию

Исходный запрос можно модифицировать или как lelik133 показал, или так:
Код

UPDATE sh_game 
SET balans=balans-15,sertifikat=2 
WHERE (login='2222' or login='jamaica' or login='Hopsua' or login='Vovaliv')
  and sertifikat=1
  and balans>=15
  and category=1

Но он делает НЕ ТО, что описано.

Если я правильно понимаю - запрос должен выполниться, только если в БД имеется ровно 4 строки с sertifikat=1 and balans>=15 and category=1 и в них login строго по указанному списку. Если строк не 4, а больше или меньше, либо хотя бы один логин не тот, обновления быть не должно. Это так или нет?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
supervladislav
Дата 15.5.2009, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

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



понятно ,но насчёт and конечно я погорячился ))))

PM MAIL   Вверх
lelik133
Дата 15.5.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 517
Регистрация: 5.2.2003
Где: Москва

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



сделайте 2 запроса
1.
Код

select count(*) as num from sh_game WHERE login in ('2222', 'jamaica','Hopsua','Vovaliv') and sertifikat=1 and balans>=15 and category=1

если num==4 выполняйте update
2. 
Код

UPDATE sh_game SET balans=balans-15,sertifikat=2 WHERE login in ('2222', 'jamaica','Hopsua','Vovaliv') and sertifikat=1 and balans>=15 and category=1




Akina, можно, но мне кажется это не очень оптимально
PM ICQ   Вверх
Gwire
Дата 16.5.2009, 10:12 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

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



Цитата(lelik133 @  15.5.2009,  09:20 Найти цитируемый пост)
сделайте 2 запроса

Самый простой не отличаюшийся быстодействием зарос:
Код
UPDATE sh_game
  SET balans = balans-15,
      sertifikat = 2
  WHERE (SELECT count(*)
           FROM sh_game
           WHERE login in ('2222', 'jamaica','Hopsua','Vovaliv')
             and sertifikat=1
             and balans>=15
             and category=1
        ) = 4
    and login in ('2222', 'jamaica','Hopsua','Vovaliv')
    and sertifikat = 1
    and balans >= 15
    and category = 1;




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


 




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


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

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