Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как объединить 3 запроса в один?
 
 автор: Bvz   (25.08.2010 в 11:54)   письмо автору
 
 

есть 3 разных запроса:


$aupdate = "UPDATE `article` SET `main`=1 WHERE `id`=".(int($id));
$aupdate = "UPDATE `category` SET `main`=1 WHERE `id`=1";
$aupdate = "UPDATE `category` SET `main`=0 WHERE `id`=".(int($id));


как объединить их в один?

  Ответить  
 
 автор: Лена   (25.08.2010 в 12:36)   письмо автору
 
   для: Bvz   (25.08.2010 в 11:54)
 

Через JOIN

  Ответить  
 
 автор: Bvz   (25.08.2010 в 12:47)   письмо автору
 
   для: Лена   (25.08.2010 в 12:36)
 

а подскажите как, а то я join только в select использовал :)

  Ответить  
 
 автор: Лена   (25.08.2010 в 12:59)   письмо автору
 
   для: Bvz   (25.08.2010 в 12:47)
 

Соединение таблиц - такое же, как и в select`e.
Схематически можно так представить:
UPDATE table1 t1
LEFT JOIN table2 t2
ON (условие объединения таблиц)
SET t2.поле таблицы = значение
WHERE...

Пробуйте сами, толку больше будет.

  Ответить  
 
 автор: Bvz   (25.08.2010 в 13:08)   письмо автору
 
   для: Лена   (25.08.2010 в 12:59)
 

т.е. правильно я понял, что принцип тот же?

  Ответить  
 
 автор: Лена   (25.08.2010 в 13:31)   письмо автору
 
   для: Bvz   (25.08.2010 в 13:08)
 

Правильно.

  Ответить  
 
 автор: Trianon   (26.08.2010 в 00:24)   письмо автору
 
   для: Bvz   (25.08.2010 в 13:08)
 

Вот только таблицы у Вас по факту запросов не связаны, и за каким кренделем их понадобилось соединять - непонятно совсем.

  Ответить  
 
 автор: Bvz   (26.08.2010 в 16:43)   письмо автору
 
   для: Trianon   (26.08.2010 в 00:24)
 

да они не связаны, вы правильно подметили, просто эти 3 запроса надо выполнить одновременно

  Ответить  
 
 автор: Diplex   (27.08.2010 в 01:28)   письмо автору
 
   для: Bvz   (26.08.2010 в 16:43)
 

Если Вы их выполните друг за другом, то ничего не потеряете.

  Ответить  
 
 автор: Bvz   (27.08.2010 в 01:30)   письмо автору
 
   для: Diplex   (27.08.2010 в 01:28)
 

я так и делаю, просто думал, что можно оптимизировать )

  Ответить  
 
 автор: Valick   (27.08.2010 в 07:38)   письмо автору
 
   для: Bvz   (27.08.2010 в 01:30)
 

если вам необходимо изменить информацию так чтобы между первым запросом и вторым или третьим не произошло чтения таблицы (которое даст неверные результаты) другим пользователем существует блокировка таблиц. Либо применяйте тип таблиц InnoBD и используйте транзакции.

  Ответить  
 
 автор: Bvz   (27.08.2010 в 08:48)   письмо автору
 
   для: Valick   (27.08.2010 в 07:38)
 

мне необходимо что выполнились эти 3 запроса, ибо тогда нет смысла в этих манипуляциях.
а как блокировать таблицы?

  Ответить  
 
 автор: Valick   (27.08.2010 в 09:04)   письмо автору
 
   для: Bvz   (27.08.2010 в 08:48)
 

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

ну а блокировка :(... не задавайте пустых вопросов которые можно спросить у гугла соблюдайте субординацию ;)

  Ответить  
 
 автор: Bvz   (27.08.2010 в 12:52)   письмо автору
 
   для: Valick   (27.08.2010 в 09:04)
 

спасибо, а где про транзакции почитать можно

  Ответить  
 
 автор: Valick   (27.08.2010 в 13:05)   письмо автору
 
   для: Bvz   (27.08.2010 в 12:52)
 

угадайте с трех раз

  Ответить  
 
 автор: Trianon   (27.08.2010 в 13:55)   письмо автору
 
   для: Bvz   (27.08.2010 в 12:52)
 

Транзакция MySQL

  Ответить  
 
 автор: Bvz   (30.08.2010 в 10:48)   письмо автору
 
   для: Trianon   (27.08.2010 в 13:55)
 

здорово, а как вы так сделали?

  Ответить  
 
 автор: Trianon   (30.08.2010 в 11:09)   письмо автору
 
   для: Bvz   (30.08.2010 в 10:48)
 

http://lmgtfy.com/?q=let+me+google+that+for+you

  Ответить  
 
 автор: Bvz   (30.08.2010 в 11:14)   письмо автору
 
   для: Trianon   (30.08.2010 в 11:09)
 

прикольно, спасибо, сейчас разберусь с транзакциями, буду мучить вопросами :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования