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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UPDATE сразу нескольких таблиц 
V
    Опции темы
animegirl
Дата 12.9.2012, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

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



Нужно было сделать UPDATE сразу нескольких таблиц, и пока писала код проверить работает ли синтаксис, нечайно рановато нажала отослать, и удивилась, что код сработал
Код
UPDATE user_profile,user_interest SET user_profile.interests_access=2,user_interest.interest_access=2 WHERE user_profile.uid=97

Совершенно не понятно как, но были изменены 2 строчки, по одной в каждой из таблиц. Меня это сильно удивило, я ведь не прописала точку их соприкосновения, то есть, что-то вроде так
Код
UPDATE user_profile,user_interest SET user_profile.interests_access=4,user_interest.interest_access=4 WHERE user_profile.uid=97 AND user_interest.uid=user_profile.uid

Работают оба варианта, так же работает вариант номер 3
Код
UPDATE user_profile,user_interest SET user_profile.interests_access=3,user_interest.interest_access=3 WHERE user_profile.uid=97 AND user_interest.uid=97

Теперь вопрос: А как вообще правильно? Чтоб и синтаксис не нарушать и быстро работало.

Таблицы простые:
Код
CREATE TABLE IF NOT EXISTS `user_profile` (
  `uid` int(10) unsigned NOT NULL,
  `interests_ids` varchar(2047) COLLATE utf8_unicode_ci DEFAULT NULL,
  `interests_access` tinyint(1) unsigned NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE IF NOT EXISTS `user_interest` (
  `uid` int(10) unsigned NOT NULL,
  `interest_id` bigint(20) unsigned NOT NULL,
  `interest_access` tinyint(3) unsigned NOT NULL,
  KEY `uid` (`uid`),
  KEY `interest_id` (`interest_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;



--------------------
Скажи миру - НЯ!
PM   Вверх
Akina
Дата 12.9.2012, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(animegirl @  12.9.2012,  02:48 Найти цитируемый пост)
Совершенно не понятно как, но были изменены 2 строчки, по одной в каждой из таблиц. Меня это сильно удивило, я ведь не прописала точку их соприкосновения

Вероятно, сработал natural join. Попробуйте изменить имя поля связывания в одной из таблиц...


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

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


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

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



Тогда ошибка, но всё равно вопрос отпадает, так как связывание в join´ах надо прописывать


--------------------
Скажи миру - НЯ!
PM   Вверх
Akina
Дата 12.9.2012, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(animegirl @  12.9.2012,  09:18 Найти цитируемый пост)
Тогда ошибка

Да. Natural join не может найти соотв. поля - и получается ошибка синтаксиса.




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

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


 




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


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

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