Узнайте об инструкции UPDATE языка SQL.
Инструкция UPDATE в Local SQL (SQL, используемый BDE) не поддерживает JOIN, так как же обновить таблицу данными из другой таблицы?
Вот как:
+-------------+ +-------------+
| Orders.db | | Customer.db |
+-------------+ +-------------+
| CustNo | <---------> | CustNo |
| ShipToAddr1 | | Addr1 |
| ShipToAddr2 | | Addr2 |
+-------------+ +-------------+
Предположим, мы хотим обновить поля ShipToAddr1 и ShipToAddr2 в таблице Orders.db значениями полей Addr1 и Addr2 соответственно из таблицы Customer.db. Мы хотим сделать это только для записей Orders, у которых оба поля пусты, соединив таблицы по полю CustNo, присутствующему в обеих таблицах. Нас может соблазнить написать:
UPDATE Orders INNER JOIN Customer
ON Customer.CustNo = Orders.CustNo
SET ShipToAddr1 = Addr1, ShipToAddr2 = Addr2
WHERE ShipToAddr1 = '' AND ShipToAddr2 = ''
Однако в Local SQL (том, который используется BDE), соединения не поддерживаются в инструкции SQL UPDATE, поэтому нам приходится использовать подзапросы, чтобы достичь ожидаемого результата:
UPDATE Orders
SET ShipToAddr1 = (SELECT Addr1 FROM Customer WHERE
Customer.CustNo = Orders.CustNo),
ShipToAddr2 = (SELECT Addr2 FROM Customer WHERE
Customer.CustNo = Orders.CustNo)
WHERE ShipToAddr1 = '' AND ShipToAddr2 = ''
В разделе об инструкции SQL UPDATE руководства по Local SQL вы можете найти пример связи один-ко-многим, в котором в подзапросах используется группировка.
Обновление таблиц данными из других таблиц с помощью Local SQL
Узнайте об инструкции UPDATE языка SQL.
Инструкция UPDATE в Local SQL (SQL, используемый BDE) не поддерживает JOIN, так как же обновить таблицу данными из другой таблицы?
Вот как:
+-------------+ +-------------+
| Orders.db | | Customer.db |
+-------------+ +-------------+
| CustNo | <---------> | CustNo |
| ShipToAddr1 | | Addr1 |
| ShipToAddr2 | | Addr2 |
+-------------+ +-------------+
Предположим, мы хотим обновить поля ShipToAddr1 и ShipToAddr2 в таблице Orders.db значениями полей Addr1 и Addr2 соответственно из таблицы Customer.db. Мы хотим сделать это только для записей Orders, у которых оба поля пусты, соединив таблицы по полю CustNo, присутствующему в обеих таблицах. Нас может соблазнить написать:
UPDATE Orders INNER JOIN Customer
ON Customer.CustNo = Orders.CustNo
SET ShipToAddr1 = Addr1, ShipToAddr2 = Addr2
WHERE ShipToAddr1 = '' AND ShipToAddr2 = ''
Однако в Local SQL (том, который используется BDE), соединения не поддерживаются в инструкции SQL UPDATE, поэтому нам приходится использовать подзапросы, чтобы достичь ожидаемого результата:
UPDATE Orders
SET ShipToAddr1 = (SELECT Addr1 FROM Customer WHERE
Customer.CustNo = Orders.CustNo),
ShipToAddr2 = (SELECT Addr2 FROM Customer WHERE
Customer.CustNo = Orders.CustNo)
WHERE ShipToAddr1 = '' AND ShipToAddr2 = ''
В разделе об инструкции SQL UPDATE руководства по Local SQL вы можете найти пример связи один-ко-многим, в котором в подзапросах используется группировка.
Обновление таблиц данными из других таблиц с помощью Local SQL
By russiatips
Узнайте об инструкции UPDATE языка SQL.