Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Объединение таблиц

Создание объединения

      Создание объединения — очень простая процедура. Нужно указать все таблицы, которые должны быть включены в объединение, а также "объяснить" СУБД, как они должны быть соотнесены между собой. Посмотрите на следующий пример.

SELECT vand_name, prod_name, prod_price
FROM Vendors, Products
WHERE Vendors.vend_id = Products.vend_id; 

 


vend_name          prod_name              prod_price
-----------------  ---------------------  --------------------
Doll House Inc.    Fish bean bag toy      3.4900
Doll House Inc.    Bird bean bag toy      3 .4900
Doll House Inc.    Rabbit bean bag toy    3.4900
Bears R Us 8 inch  teddy bear             5.9900
Bears R Us 12 inch teddy bear             8.9900
Bears R Us 18 inch teddy bear             11.9900
Doll House Inc.    Raggedy Ann            4.9900
Fun and Games      King doll              9.4900
Fun and Games      Queen doll             9.4900

      Рассмотрим представленный выше код. Оператор SELECT начинается точно так же, как все операторы, которые мы до сих пор рассматривали, — с указания столбцов, которые должны быть выбраны. Существенная разница состоит в том, что два из указанных столбцов (prod_name и prod_price) находятся в одной таблице, а третий (vend_name) — в другой.

      Теперь посмотрим на предложение FROM. В отличие от предыдущих операторов SELECT, этот содержит две таблицы, указанные в предложении FROM, Vendors и Products. Это имена двух таблиц, которые должны быть объединены в данном операторе SELECT.

      Таблицы корректно объединяются в предложении WHERE, которое указывает СУБД связывать идентификатор поставщика vend_id из таблицы Vendors со значением vend_id таблицы Products.

      Обратите внимание на то, что эти столбцы указаны как Vendors.vend_id и Products.vend_id. Такие полностью определенные имена необходимы здесь потому, что, если вы укажете только vend_id, СУБД не сможет понять, на какие именно столбцы vend_id вы ссылаетесь. (Их два, по одному в каждой таблице). Как можно видеть из представленного результата, один оператор SELECT возвращает данные из двух разных таблиц.

Полностью определенные имена столбцов

Используйте полностью определенные имена столбцов (таблицы и столбцы разделяются точкой) всякий раз, когда может возникнуть неоднозначность относительно того, на какой столбец вы ссылаетесь. В большинстве СУБД будет возвращено сообщение об ошибке, если вы укажете неоднозначное имя столбца, не определив его полностью путем указания имени таблицы.