Обновить столбец базы слева присоединиться к последней записи даты и времени столбца

#php #mysql #laravel

#php #mysql #laravel

Вопрос:

Необходимо обновить базу столбца слева присоединиться к последней записи. Как, например, ниже

ТАБЛИЦА A:

ID Имя СОЗДАНО ОБНОВЛЕНО Доставка
1 P #A 2021-01-05 00:23:00

ТАБЛИЦА B:

ID TABLE_A_ID Описание СОЗДАНО ПРЕДПОЛАГАЕМАЯ ДОСТАВКА
1 1 Обработка 2021-01-05 12:00:00
2 1 Упаковка 2021-01-06 12:00:00 2021-01-07 00:23:00
3 1 Отправлено 2021-01-06 12:00:00 2021-01-08 00:23:00
3 1 Delivere 2021-01-06 12:00:00

Основываясь на приведенных выше таблицах, как я могу перенести предполагаемую доставку из таблицы b в столбец предполагаемой доставки таблицы a?

Приведенный ниже код выдает ошибку. You can't specify target table 'TableA' for update in FROM clause

 TableA::leftJoin('table_b as b', function ($join) {
  $join->on('tableA.id', '=', 'b.table_a_id');
  $join->whereRaw('b.table_a_id = (SELECT a.id FROM table_a as a LEFT JOIN table_b as b on a.id = b.table_a_id WHERE b.estimated_delivery IS NOT NULL GROUP BY a.id ORDER BY b.estimated_delivery DESC LIMIT 1)');
})->update(['table_a.delivery' => DB::raw('b.estimated_delivery')])
 

Любые предложения по этому поводу будут высоко оценены. Спасибо!

Комментарии:

1. Похоже, это нарушение SSOT ( en.wikipedia.org/wiki/Single_source_of_truth ). Не лучше ли изменить свои запросы, чтобы получить delivery информацию из таблицы B?

2. ЛЕВОЕ СОЕДИНЕНИЕ в ОБНОВЛЕНИИ — это немного странная вещь.