Intereting Posts
Событие расписания wordpress не срабатывает в установленное время Помните, что флажки отмечены на разных страницах – какой лучший способ? Нужен простой хэш в PHP Преобразовать MongoCursor из -> find () в массив Проблемы с установкой XAMPP v1.7.4, локальный хост не работает Как получить предыдущий год с помощью PHP Как оптимизировать запрос mysql, получая категории и подкатегории Петля до тех пор, пока код доступа не станет уникальным Можем ли мы перезагрузить один из пулов PHP-FPM, не беспокоя других Как преобразовать числовой номер месяца в название месяца с помощью PHP Php code formatter / beautifier и php beautification вообще "Устаревшая: session_is_register ()" ошибка – PHP как переписывать Url для совместного размещения вспомогательных папок godaddy назад возвращает пользователя на защищенную страницу после выхода из системы -zend framework Можно ли написать парсер электронной почты в PHP?

Выполнение выбора и обновления в одном запросе

есть ли запрос, в котором я могу выполнить оба запроса в одном?

Это первый

$q = "select c.id as campaignId,c.priceFactor, o.cid,o.bloggerPrice,o.state as state,o.customerPrice,o.id as orderId,o.listPrice,o.basicPrice from campaign c, orders o where c.id={$campaignId} and c.id = o.cid and o.state in (8,9)"; 

И это вторая

  foreach($orders as $order) { $listPrice = $order->priceFactor * $order->basicPrice; if($order->bloggerPrice < $listPrice || $order->customerPrice < $listPrice) { $order->bloggerPrice = $listPrice; $order->customerPrice = $listPrice; } $qUpdate = "update orders set listPrice = {$listPrice},bloggerPrice={$order->bloggerPrice}, customerPrice ={$order->customerPrice} where id=$order->orderId and cid={$order->cid}"; // $this->db->q($qUpdate); } 

Мой вопрос: могу ли я сделать это выше, без кода PHP, просто чистого SQL?

В MySQL вы можете использовать соединение сразу после UPDATE. В вашем примере это может выглядеть примерно так:

 update Orders o inner join Campaign c on c.id = o.cid set listPrice = o.priceFactor * order.basicPrice , bloggerPrice = case when o.bloggerPrice < o.priceFactor * order.basicPrice then o.priceFactor * order.basicPrice else bloggerPrice end , listPrice = case when o.customerPrice < o.priceFactor * order.basicPrice then o.priceFactor * order.basicPrice else listPrice end where o.state in (8,9) and c.id = {$campaignId}