Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

~OUTER ~ INNER JOIN


+JOIN+ ©   (2006-10-20 12:01:00) 

Здравствуйте мастера.
Помогите понять пожалуйста, чем отличаются следующие операторы:

OUTER JOIN
LEFT OUTER JOIN
INNER JOIN


Я видел их в работе, но так и не могу понять принцип каждого из них.
(в мануалах которые у меня есть, я не смог найти описание этих команд)

Спасибо.


+JOIN+   (2006-10-20 12:44:00) [1]

Спасибо всем.


Desdechado   (2006-10-20 12:40:00) [2]

LEFT или RIGHT означает только сторону в операторе соединения, которая быть обязана, вторая может не быть


ЮЮ   (2006-10-20 12:39:00) [3]

Наличие OUTER при наличии LEFT роли не играют.

Для INNER JOIN достатточно просто JOIN
Для OUTER JOIN указать какое, само OUTER опустить

a LEFT JOIN b
 все записи из а, а из b - как придется
a RIGHT JOIN b
 все записи из b, а из a - как придется. На практике не использую, т.к. связываю таблицы слева -направо

a
[LEFT] JOIN b ON ...
[LEFT] JOIN c ON ...
,,,

a FULL JOIN b
 итоге будут все записи из а и b, а соответствуюшие им - как придется

как придется - означает, что вернутся NULL-евые поля таблицы, если соответствующих записей в ней нет


Anatoly Podgoretsky   (2006-10-20 12:36:00) [4]


> А наличие оператора <LEFT>  в OUTER JOIN играет какую-нибудь
> роль?

Играет, но это как раз в третью очередь, системно зависимо, но как правило это LEFT


Anatoly Podgoretsky   (2006-10-20 12:34:00) [5]


> Я бы его ближе послал в Localsql.hlp :-)

Рано и опасно, нахватется верхов и будет постоянно приходить на форум с жалобой. Надо все таки теорию изучать в первую очередь, SQL во вторую и уж только в третью конкретный синтаксис.


+JOIN+   (2006-10-20 12:31:00) [6]

> [3] Desdechado ©   (20.10.06 12:21)

Спасибо.
А наличие оператора <LEFT> в OUTER JOIN играет какую-нибудь роль?


Desdechado   (2006-10-20 12:21:00) [7]

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


Плохиш   (2006-10-20 12:19:00) [8]

Я бы его ближе послал в Localsql.hlp :-)


Anatoly Podgoretsky   (2006-10-20 12:11:00) [9]

Первые два левое внешнее соединение, а последнее внутреннее.
Советую почитать что ни будь по теории баз данных, например Дейта.


Наверх

Титульная страница Поиск, карта сайта Написать письмо