Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > mysql: обновить несколько записей за раз


Автор: bazzjr 3.7.2010, 20:06
Всем привет!

Скажите уважаемые, возможно ли сделать одним запросом следующие конструкции?

1
Код

$sql = mysql_query("UPDATE `table1` SET `aa`='1' WHERE `id1`='".$id."'",$connect) or die();
$sql = mysql_query("UPDATE `table2` SET `bb`='1' WHERE `id2`='".$id."'",$connect) or die();

2
Код

$sql = mysql_query("UPDATE `table1` SET `id`='999999999' WHERE `id`='".$id1."' LIMIT 1",$connect) or die();
$sql = mysql_query("UPDATE `table1` SET `id`='".$id1."' WHERE `id`='".$id2."' LIMIT 1",$connect) or die();
$sql = mysql_query("UPDATE `table1` SET `id`='".$id2."' WHERE `id`='999999999' LIMIT 1",$connect) or die();


Автор: Akina 4.7.2010, 20:01
Да, можно. Причём элементарно.
Как - не скажу, пока ты не научишься уважать время тех, от кого ждёшь помощи.

Автор: bazzjr 5.7.2010, 00:08
Akina, я все понимаю, понимаю вашу занятость и ограниченность времени... но и меня поймите пожалуста.

В моём положении это неизбежные вопросы.
Сейчас я лежу в больнице, по здоровью очень хреново, при этом приходиться программировать время от времени(когда более менее здоровье позволяет) и разрабатывать новые запросы и функции, вся эта работа очень и очень нужна.

Доступа в инет сейчас практически нет(так как в больнице).

Поэтому я задал сюда эти простые вопросы в надежде получить быстрый и точный ответ.

Автор: Akina 5.7.2010, 08:08
bazzjr, хорошо, перевожу на совсем уж понятный язык. В форуме по MySQL размещают именно MySQL-код, а не коды запросов, закрученных в ПХП-шную шубу. 

MySQL позволяет оформить несколько запросов одной строкой:
Код

Update t1 Set f1='1';Update t2 Set f2='2';Update t3 Set f3='3';

Все эти три запроса отправляются серверу одной строкой (что с консоли, что из любого ЯП), и все три выполняются.

Автор: skyboy 5.7.2010, 10:22
Цитата(Akina @  5.7.2010,  07:08 Найти цитируемый пост)
MySQL позволяет оформить несколько запросов одной строкой:

а вот mysql_query не позволяет. зато позволяет http://php.net/mysqli

Автор: bazzjr 5.7.2010, 13:40
skyboy, не мог бы ты набросать пример, как будет выглядеть запрос для меня?

Добавлено через 27 секунд
Akina, спасибо, я понял.

Автор: Akina 5.7.2010, 13:48
Цитата(skyboy @  5.7.2010,  11:22 Найти цитируемый пост)
а вот mysql_query не позволяет

А эту проблему следует решать в форуме по PHP.

Автор: bazzjr 5.7.2010, 18:32
Цитата(Akina @ 5.7.2010,  13:48)
Цитата(skyboy @  5.7.2010,  11:22 Найти цитируемый пост)
а вот mysql_query не позволяет

А эту проблему следует решать в форуме по PHP.

Как то раз я создал две одинаковые темы - получил предупреждение.

Поэтому либо вы переносите эту тему в PHP раздел, либо я создам там такую же, с вашего разрешения smile.

Автор: Akina 5.7.2010, 18:35
Цитата(bazzjr @  5.7.2010,  19:32 Найти цитируемый пост)
Как то раз я создал две одинаковые темы - получил предупреждение.

Правильно. Разделите вопрос, и каждую часть размещайте в подходящем форуме.

Цитата(bazzjr @  5.7.2010,  19:32 Найти цитируемый пост)
Поэтому либо вы переносите эту тему в PHP раздел, либо я создам там такую же, с вашего разрешения

Перенести не могу - в этом разделе у меня нет таких прав, я тут обычный пользователь.
Создавать такую же не советую - по причинам, описанным выше. И моё разрешение (даже если я его дам) не поможет - там я тоже обычный пользователь.

Автор: skyboy 5.7.2010, 20:50
тебе надо определиться. не "помогите что-то сделать", а либо "хочу выполнить за раз обновление нескольких полей в РНР" в "РНР: Базы данных" - и тебе рассказывают, что mysql_query этого делать не умеет, либо "хочу сделать одним запросом обновление разными данными по разным условиям" - и тебе одновременно и предлагают использовать функции IF(), CASE() и, в то же время, доказывают малую практическую ценность подобного "сцепления" запросов.
но для этого тебе надо решить - че тебе все ж надо? если решить не можешь, то описывай решаемую задачу(конкретный нюанс рабочего проекта, учебное задание, теоретический вопрос) и соответствующие ограничения("только mysql_query, потому что уже все завязанно на нем", "только средствами SQL-запроса, потому что так сказал преподаватель", "универсально и с неограниченным количеством параметров-условий, потому что неясно, как будет дальше использоваться"), а не выбранный путь(раз уж ты с ним определиться не можешь)

Автор: bazzjr 5.7.2010, 21:43
skyboy, все, спасибо smile

Вопрос снят с повестки дня  smile

Добавлено через 3 минуты и 4 секунды
Akina, с 14242 сообщений(по моему больше всех у кого я мог видеть) и 4-мя звездами smile, мне кажется можно стать с легкостью модератором-администратором  smile 

Автор: skyboy 5.7.2010, 23:47
так че решил-то? или просто отложил задачу "на будущее"?
Цитата(bazzjr @  5.7.2010,  20:43 Найти цитируемый пост)
мне кажется можно стать с легкостью модератором-администратором

а ты на статус его внимание обрати  smile

Автор: bazzjr 6.7.2010, 00:37
Цитата(skyboy @ 5.7.2010,  23:47)
так че решил-то? или просто отложил задачу "на будущее"?

Сделал выводы из твоих слов, о том что такие запросы не нужно реализовывать с помощью "IF(), CASE()" и невозможно с помощью "mysql_query()".

Вывод - оставить "пока" все как есть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)