Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2013, 18:25   #1
Xameleon666
Пользователь
 
Регистрация: 08.02.2012
Сообщений: 44
По умолчанию MySQL Update условие

Всем привет форумчане такая вот проблемка есть запрос и условие
Код:
com.mysql.jdbc.Statement statsql1 = (com.mysql.jdbc.Statement) conn.createStatement();
                        String updateTableSQL1 = "UPDATE user_weapons SET haveWeapon = '0' WHERE id_user = '"+id_user+"' AND id_weapons = '1' AND id_weapons = '6' AND id_weapons = '15' AND id_weapons = '19'";         
                        statsql1.executeUpdate(updateTableSQL1);
суть запроса замени в столбце haveWeapon на 0 там где есть этот пользователь и ид оружыя такие то.
вроде все правильно лезу в базу данных меняю все значения на 1 запускаю проэкт код отработал забавно он выбил везде нули по пользователю окромя указаных ид. скажите где ошибка за рание спасибо

Последний раз редактировалось Xameleon666; 30.09.2013 в 18:28.
Xameleon666 вне форума Ответить с цитированием
Старый 30.09.2013, 18:40   #2
Xameleon666
Пользователь
 
Регистрация: 08.02.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Xameleon666 Посмотреть сообщение
Всем привет форумчане такая вот проблемка есть запрос и условие
Код:
com.mysql.jdbc.Statement statsql1 = (com.mysql.jdbc.Statement) conn.createStatement();
                        String updateTableSQL1 = "UPDATE user_weapons SET haveWeapon = '0' WHERE id_user = '"+id_user+"' AND id_weapons = '1' AND id_weapons = '6' AND id_weapons = '15' AND id_weapons = '19'";         
                        statsql1.executeUpdate(updateTableSQL1);
суть запроса замени в столбце haveWeapon на 0 там где есть этот пользователь и ид оружыя такие то.
вроде все правильно лезу в базу данных меняю все значения на 1 запускаю проэкт код отработал забавно он выбил везде нули по пользователю окромя указаных ид. скажите где ошибка за рание спасибо
как я понимаю он должен был перебрать все строки где есть пользователе с указаными ид оружия и проделать своё дело
Xameleon666 вне форума Ответить с цитированием
Старый 30.09.2013, 18:49   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Вообще-то что задали в запросе, то он и делает. Что-то не верится, что задали одно, а обновил запрос другое
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.09.2013, 19:14   #4
Xameleon666
Пользователь
 
Регистрация: 08.02.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Вообще-то что задали в запросе, то он и делает. Что-то не верится, что задали одно, а обновил запрос другое
по факту запрос правильно записан?
Xameleon666 вне форума Ответить с цитированием
Старый 30.09.2013, 19:39   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
id_weapons = '1' AND id_weapons = '6' AND id_weapons = '15' AND id_weapons = '19'
Как значение поля может быть одновременно равно и 1, и 6, и 15 и 19? Наверно OR, лучше IN
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.10.2013, 11:42   #6
Xameleon666
Пользователь
 
Регистрация: 08.02.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
id_weapons = '1' AND id_weapons = '6' AND id_weapons = '15' AND id_weapons = '19'
Как значение поля может быть одновременно равно и 1, и 6, и 15 и 19? Наверно OR, лучше IN
я не знаю какой у вас опыт в СУБД но в таблице может быть строк с Id пользователем и Id оружия очень много вот и надо заменить в всех строках где есть наш игрок и данные типы оружия.
Xameleon666 вне форума Ответить с цитированием
Старый 01.10.2013, 11:46   #7
Xameleon666
Пользователь
 
Регистрация: 08.02.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Xameleon666 Посмотреть сообщение
я не знаю какой у вас опыт в СУБД но в таблице может быть строк с Id пользователем и Id оружия очень много вот и надо заменить в всех строках где есть наш игрок и данные типы оружия.
сделал пока так проверить пока не получилось так как напарник над клиенсчкой частью работать про тестить не могу(
Код:
UPDATE user_weapons SET haveWeapon = '0' WHERE id_user = '"+id_user+"' AND (id_weapons = '1' || id_weapons = '6' || id_weapons = '15' || id_weapons = '19')"
Xameleon666 вне форума Ответить с цитированием
Старый 01.10.2013, 12:29   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
я не знаю какой у вас опыт в СУБД но в таблице может быть строк с Id пользователем и Id оружия очень много вот и надо заменить в всех строках где есть наш игрок и данные типы оружия.
Типа крик отчаяния? Вот смотрим, что обозначает следующее условиее на человеческом языке
Код:
WHERE id_user = '"+id_user+"' AND id_weapons = '1' AND id_weapons = '6' AND id_weapons = '15' AND id_weapons = '19'"
Найти все записи, у которых id_user равен некому идентификатору юзера И id_weapons равен 1 И id_weapons=6. Дальше можно опустить. Что произойдет - встретилась запись с нужным ид юзера и id_weapons=1, но при этом id_weapons<>6. Все, запись не выбрана. В общем такое условие не выберет ни одной записи из любого набора данных. А вот следующие условия подойдут:
Код:
WHERE id_user = '"+id_user+"' AND id_weapons IN (1,6,15,19)
или
WHERE id_user = '"+id_user+"' AND (id_weapons = '1' OR id_weapons = '6' OR id_weapons = '15' OR id_weapons = '19')"
По русски - найти все записи, у которых id_user равен некому идентификатору юзера И (id_weapons равен 1 ИЛИ id_weapons=6 ИЛИ ...). Разницу ощущаете?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 01.10.2013 в 12:31.
Аватар вне форума Ответить с цитированием
Старый 01.10.2013, 12:34   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

А чего все поля (тем более ид-ы) строковые? вы что других типов не знаете?
не мудрено что все работает не так как надо.
eval вне форума Ответить с цитированием
Старый 01.10.2013, 12:46   #10
Xameleon666
Пользователь
 
Регистрация: 08.02.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Типа крик отчаяния? Вот смотрим, что обозначает следующее условиее на человеческом языке
Код:
WHERE id_user = '"+id_user+"' AND id_weapons = '1' AND id_weapons = '6' AND id_weapons = '15' AND id_weapons = '19'"
Найти все записи, у которых id_user равен некому идентификатору юзера И id_weapons равен 1 И id_weapons=6. Дальше можно опустить. Что произойдет - встретилась запись с нужным ид юзера и id_weapons=1, но при этом id_weapons<>6. Все, запись не выбрана. В общем такое условие не выберет ни одной записи из любого набора данных. А вот следующие условия подойдут:
Код:
WHERE id_user = '"+id_user+"' AND id_weapons IN (1,6,15,19)
или
WHERE id_user = '"+id_user+"' AND (id_weapons = '1' OR id_weapons = '6' OR id_weapons = '15' OR id_weapons = '19')"
По русски - найти все записи, у которых id_user равен некому идентификатору юзера И (id_weapons равен 1 ИЛИ id_weapons=6 ИЛИ ...). Разницу ощущаете?
да спасибо последний вариант у меня правильно написан. спасибо просто голова уже на столько забита что сам растерялся , спасиб что поставили на верный путь)))

Последний раз редактировалось Xameleon666; 01.10.2013 в 12:50.
Xameleon666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Php +MySql (функция UpDate) kirill555 PHP 10 20.08.2011 15:02
(MySQL) не срабатывает UPDATE в ZEOS ChySam БД в Delphi 4 16.06.2011 10:57
Условие на UPDATE данных nikta БД в Delphi 4 14.05.2010 15:45
PHP+MySQL. Как выполнить UPDATE таблицы? ViTYAi PHP 5 24.12.2009 10:03