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

Расширенные объединения

Естественные объединения

      Всякий раз, когда объединяются таблицы, по крайней мере один столбец будет появляться более чем в одной таблице (т.е. столбцы, которые объединялись). Обычные объединения (внутренние объединения, которые мы рассмотрели в предыдущем уроке) возвращают все данные, даже многократные вхождения одного и того же столбца. Естественное объединение просто уничтожает эти многократные вхождения, так что в результате возвращается только один столбец.

      Естественное объединение — это объединение, в котором вы выбираете только не повторяющиеся столбцы. Обычно это делается при помощи метасимвола (SELECT *) для одной таблицы и указания явного подмножества столбцов для всех остальных таблиц. Вот пример:

SELECT С.*, O.order_num, O.order_date, OI.prod_id, OI.quantity, OI.item_price
FROM Customers AS C, Orders AS O, Orderltems AS OI WHERE C.cust_id = O.cust_id
AND OI.order_num = O.order_num
AND prod_id = 'RGANOl';

       В этом примере метасимвол используется только для первой таблицы. Все остальные столбцы указаны явно, поэтому никакие дубликаты столбцов не выбираются. Несомненно, каждое внутреннее объединение, которое вы использовали до сих пор, представляло собой в действительности естественное объединение и, возможно, вам никогда не понадобится внутреннее объединение, не являющееся естественным.