2013-06-26 10 views
0

У меня есть следующие 2 запроса, которые мне задавались вопросом, могу ли я объединиться в один оператор.одиночный запрос mysql для обновления количества на основе выбора количества другой таблицы

$sql = "SELECT sale_qty FROM sale_device WHERE id = '$id' "; 

и

$sql = "UPDATE device SET qty = $sale_qty WHERE id = $deviceId"; 

я хочу запустить запрос на выборку, чтобы получить текущее количество устройства из ряда, а затем использовать это значение минус один в запросе обновления, чтобы установить новое количество, но не допускается до 0

Возможно или нет? или было бы проще просто запустить 2 запроса?

ответ

0

Да. Я думаю, что это делает то, что вы хотите:

UPDATE device 
    SET qty = (SELECT greatest(sale_qty - 1, 0) 
       FROM sale_device 
       WHERE id = '$id' 
      ) 
    WHERE id = $deviceId 
0

Если я понять Ваш вопрос правильно, я думаю, что это должно работать:

UPDATE Device D 
    JOIN Sale_Device SD ON D.Id = SD.DeviceId 
SET D.qty = GREATEST(SD.sale_qty-1,0) 
WHERE SD.Id = '$id' 

Это предполагает, что Sale_Device таблица имеет DeviceId поле.