Главная страница


su.dbms.sql

 
 - SU.DBMS.SQL ------------------------------------------------------------------
 From : Lilya A. Kozlenko                    2:5025/17      16 Apr 2001  13:13:13
 To : All
 Subject : Re: join
 -------------------------------------------------------------------------------- 
 
 
 > Вторник Март 20 2001: Alexei Y. Galich ... All
 >  AG> From: "Alexei Y. Galich" <galich@tps.ifmo.ru>
 >
 >  AG> просветите пожалуйста - что такое join, outer join, left join?
 Синтаксис приведен IBM DB2 UDB. Синтаксис Oracle для описания таких join не
 поддерживается, там += и =+ для правого и левого соотв..
 
 <соединение таблиц> ::=
  <полное соединение>
  | <ограниченное соединение>
  |  ( <соединение таблиц> )
 <полное соединение> ::=
 <описатель таблицы> CROSS JOIN <описатель таблицы>
 <ограниченное соединение> ::=
 <описатель таблицы> [<тип соединения>]
 JOIN <описатель таблицы> [ <спецификация соединения> ]
 
 <спецификация соединения> ::= ON <спецификатор выборки>
 <тип соединения> ::=
  INNER
  | {LEFT | RIGHT | FULL } [OUTER]
  | UNION
 Синтаксические правила
 -  При отсутствии скобок соединение таблиц выполняется слева направо;
 - Если  задано <ограниченное соединение>, а <тип соединения> не указан, по
 умолчанию принимается INNER (внутренне соединение);
 - В <спецификаторе выборки> запрещены внешние ссылки, только ссылки к
 таблицам соединения;
 - Для соединения типа CROSS JOIN нельзя указывать <спецификатор выборки>;
 - Каждая таблица, входящая в JOIN, имеет своей областью видимости весь
 подзапрос, содержащий этот JOIN, за исключением той части <спецификатора
 отображения>, которая не содержит соединения, включающего эту таблицу;
 - Запрещено повторение имен таблиц и заменяющих их имен в одном
 <спецификаторе  отображения>.
 Общие правила
 SELECT * FROM A CROSS JOIN B
 есть то же самое, что
 SELECT * FROM A,B
 
 SELECT * FROM A INNER JOIN B ON  <спецификатор выборки>
 есть то же самое, что
 SELECT * FROM A,B  <спецификатор выборки>
 
 SELECT * FROM A LEFT OUTER JOIN B ON <спецификатор выборки>
 есть то же самое, что
 SELECT * FROM A,B <спецификатор выборки>
 UNION
 SELECT A.*,<пустые значения> FROM A WHERE NOT EXISTS SELECT *
 FROM B <спецификатор выборки>
 
 SELECT * FROM A RIGHT OUTER JOIN B ON <спецификатор выборки>
 есть то же самое, что
 SELECT * FROM A,B <спецификатор выборки>
 UNION
 SELECT <пустые значения>,B.* FROM B WHERE NOT EXISTS SELECT * FROM A
 <спецификатор выборки>
 
 SELECT * FROM A FULL OUTER JOIN B ON <спецификатор выборки>
 есть то же самое, что
 SELECT * FROM A,B WHERE <спецификатор выборки>
 UNION
 SELECT A.*, <пустые значения> FROM A WHERE NOT EXISTS SELECT * FROM B
 <спецификатор выборки>
 UNION
 SELECT <пустые значения>,B.* FROM B WHERE NOT EXISTS SELECT * FROM A
 <спецификатор выборки>
 
 SELECT * FROM A UNION JOIN B ON <спецификатор выборки>
 есть то же самое, что
 SELECT A.*, <пустые значения> FROM A WHERE NOT EXISTS SELECT * FROM B
 <спецификатор выборки>
 UNION
 SELECT <пустые значения>,B.* FROM B WHERE NOT EXISTS SELECT * FROM A
 <спецификатор выборки>
 Под <пустыми значениями> везде понимаются NULL-значения в таком количестве и
 таких типов, чтобы содержащий их запрос совпадал по количеству и типам
 значений с тем запросом, с которым он объединяется по UNION.
 --
  Regards, Lilya Kozlenko
 --- Microsoft Outlook Express 5.50.4522.1200
  * Origin: RELEX Inc. (2:5025/17@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 join   Alexei Y. Galich   20 Mar 2001 12:18:02 
 Re: join   Andrew Evdokimov   21 Mar 2001 17:19:33 
 Re: join   Ilya Zvyagin   26 Mar 2001 10:46:13 
 join   Vladimir Ivanov   21 Mar 2001 11:31:00 
 Re: join   Lilya A. Kozlenko   16 Apr 2001 13:13:13 
Архивное /su.dbms.sql/7753d93d18c8.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional