Как сделать запись в таблицу одним запросом, если полей 6, а значение одно?

Рейтинг: 0Ответов: 1Опубликовано: 27.02.2023

Удаляю запись из таблицы order и записываю ее в order_archive. Появилась потребность при добавлении данных в order_archive записывать дополнительно поле supply_id, которого в таблице order нет. Проблема в том, что у меня в запросе 6 полей, а значение одно, так как остальные берутся из таблицы order. Как это все объединить в одном запросе?

if ( isset ( $_POST['id'] ) && isset($_POST['supply_id']) )
{
  $supply_id = $_POST['supply_id'];
  $ids = implode( ',', $_POST['id'] );
 
  $query = ("
    INSERT INTO `order_archive`(`id`, `user_id`, `articul_id`, `barcode`, `quantity`, `supply_id`) VALUES ($supply_id)
    SELECT `id`, `user_id`, `articul_id`, `barcode`, `quantity` FROM `order` WHERE `id` IN ($ids);
    DELETE FROM `order` WHERE `id` IN ($ids)");
    if(mysqli_multi_query($db, $query)) {
      echo 'В поставку добавлены: ' .$ids;
    } else {
      echo "Error querying database: " . mysqli_error($db);
    }
}

Ответы

▲ 0
$query = ("
    INSERT INTO `order_archive`(`id`, `user_id`, `articul_id`, `barcode`, `quantity`, `supply_id`)
    SELECT `id`, `user_id`, `articul_id`, `barcode`, `quantity`, " . $supply_id . " as supply_id FROM `order` WHERE `id` IN ($ids);
    DELETE FROM `order` WHERE `id` IN ($ids)");