Узнайте об инструкции 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

Узнайте об инструкции UPDATE языка SQL.
рекомендовать друзьям
  • gplus
  • pinterest

Комментарий

Оставить комментарий

Оценивать