32 Урока Borland Delphi



             

Урок 21 - часть 9


Имеется существенное различие между связанными курсорами и соединенными таблицами. Однако они имеют две общие черты:

  • И те, и другие используют две или более таблиц
  • Каждый таблица связана с другой по одному или более одинаковых полей.
Соединение таблиц ORDERS и ITEMS может быть выполнено единственным SQL запросом, который выглядит так:

select

O.CustNo, O.OrderNo, O.SaleDate, I.PartNo, I.Qty

from Orders O, Items I

where O.OrderNo = I.OrderNo

Этот запрос состоит из четырех различных частей:

  1. Выражение Select определяет, что Вы хотите получить - курсор, содержащий некоторую форму DataSet.
  2. Затем идет список полей которые Вы хотите включить в dataset. Этот список включает поля CustNo, OrderNo, SaleDate, PartNo и Qty. Первые три поля из таблицы ORDERS, а два других - из таблицы ITEMS.
  3. Выражение from объявляет, что Вы работаете с двумя таблицами, одна называется ORDERS, а другая ITEMS. Для краткости, в запросе используется особенность SQL, которая позволяет Вам ссылаться на таблицу ORDERS буквой O, а на таблицу ITEMS буквой I.
  4. Выражение where жизненно важно потому, что оно определяет поля связи для двух таблиц. Некоторые серверы могут вернуть DataSet, даже если Вы не включите выражение where в запрос, но почти всегда результирующий набор записей будет не тем, что Вы хотели видеть. Чтобы получить нужный результат, убедитесь что Вы включили выражение where.
      1. Open или ExecSQL?


      После того, как составлен SQL запрос, есть два различных способа выполнить его. Если Вы хотите получить курсор, то нужно вызывать Open. Если выражение SQL не подразумевает возвращение курсора, то нужно вызывать ExecSQL. Например, если происходит вставка, удаление или обновление данных (т.е. SQL запросы INSERT, DELETE, UPDATE), то нужно вызывать ExecSQL. Тоже самое можно сказать по-другому: Open вызывается при запросе типа SELECT, а ExecSQL - во всех остальных случаях.

      Вот типичный SQL запрос, который используется для удаления записи из таблицы:

      delete from Country where Name = ‘Argentina’;

      Этот запрос удалил бы любую запись из таблицы COUNTRY, которая имеет значение "Argentina" в поле Имя.




      Содержание  Назад  Вперед