@Us59

Как сделать несколько UPDATE одним запросом?

Из ф-ции приходит массив, я разбираю и проверяю какие статусы вернулись, и далее мне нужно занести эти данные в БД.
foreach ($result as $value) {
        		if ($value["Status"] == 1) {
        			$arraySuccessRequests[] = array(
        				'Id' => $value["Id"],
        				'Request' => $value["Request"]
        			);
        		} elseif ($value["Status"] == 0) {
        			$arrayFailedRequests[] = array(
        				'Id' => $value["Id"],
        				'Request' => $value["Request"]
        			);
        		}
        	}

Для Status == 1:
UPDATE orders SET Request = " . $result["request"] . " WHERE Id = " . $order["Id"] .

Для Status == 0:
UPDATE orders SET StatusId = 4, Error = " . $result["request"] . " WHERE Id = " . $order["Id"] .

Это все хочется сделать 2-мя запросами в БД, подскажите как это можно сделать?
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Vitsliputsli
Почему хотите только 2 запроса? Не факт, что это будет быстрее.

Можно, например, так:
update orders
	join (select $id1 id, $request1 request from dual
            union all
            select $id2, $request2 from dual) data
            on orders.id=data.id
    set request=data.request

Либо делать процедуру.
Ответ написан
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
Вот тут как раз обсуждали намедни.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы