Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объясните разницу в запросх  [new]
Anna_Mol
Member

Откуда: Новосибирск
Сообщений: 64
Доброго всем дня!
В запросах еще большого опыта не имею,но хотелось бы понять для чего акие то запросы пишутся так ,а какие эдак.
В институте и книжках учили когда пишем запрос для нескольких таблиц пишем так:
select a.id, b.id
from art a, beta b

Когда пришла на рабочее место все запросы в ввиде:
select a.id, b.id
from art a, join beta b on a.id = b.id

Это способ избавить себя от лишнего когда,т.е. сразу связати талицы по id или как?
Просто в книжке я про join вообще ни чего не видела,что бы join в самом коде запроса был.
Объясните,пожалуйста ,в чем разница и как "грамотнее".
9 фев 12, 10:58    [12059972]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Join - более кошерный способ. Потому что еще бывают внешние соединения. И потому что код понятнее: условие связывания находится рядом с таблицей, а не где-то там через ндцать строк в условии where.
9 фев 12, 11:01    [12059995]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Anna_Mol,

список таблиц через запятую - это устаревший стандарт ANSI-89.
Соединение таблиц разными видами JOINов - это стандарт ANSI-92.

Смешивать новый и старый синтаксис не рекомендуется.

Читайте тут
9 фев 12, 11:05    [12060027]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
Anna_Mol
Member

Откуда: Новосибирск
Сообщений: 64
Гавриленко Сергей Алексеевич,спасибо!
Странно что про это в книжках не видила.
9 фев 12, 11:06    [12060036]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
Anna_Mol
Member

Откуда: Новосибирск
Сообщений: 64
iap, т.е. лучше купить новую книжку )))!
9 фев 12, 11:08    [12060050]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Anna_Mol
iap, т.е. лучше купить новую книжку )))!
А у Вас какая? Какого года?
9 фев 12, 11:15    [12060134]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
Anna_Mol
Member

Откуда: Новосибирск
Сообщений: 64
iap
Anna_Mol
iap, т.е. лучше купить новую книжку )))!
А у Вас какая? Какого года?

ВВедение в SQL.Мартин Грабер.1996 года.
9 фев 12, 11:22    [12060213]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Anna_Mol
iap
пропущено...
А у Вас какая? Какого года?

ВВедение в SQL.Мартин Грабер.1996 года.
16 лет прошло...
Сейчас SQL ANSI-2008 принят, если не ошибаюсь.
9 фев 12, 11:35    [12060391]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
Anna_Mol
Member

Откуда: Новосибирск
Сообщений: 64
iap
Anna_Mol
пропущено...

ВВедение в SQL.Мартин Грабер.1996 года.
16 лет прошло...
Сейчас SQL ANSI-2008 принят, если не ошибаюсь.

А SQLсервер 2000 у мя на работе.
9 фев 12, 11:47    [12060529]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
Ораклоиды до сих пор через запятую пишут.
Для Оракла тоже так стал писать (через запятую), потому что
иногда при написании по стандарту вылезают странные баги (сам натыкался),
которые видимо ораклистам не попадаются, потому что они привыкли писать через запятые.
9 фев 12, 13:23    [12061651]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
igor2222
Member

Откуда: Харків
Сообщений: 1233
Оракл документация написана в стиле Where, и (+) написать короче, чем документированный LEFT OUTER JOIN. Вот почему делфисты пишут
Inc(i)
, а .Нетчики
i++
?
Хотя оба могут написать i (:)= i+1;
Потому что стиль такой- Оракл пишет
if i=1 then i:=2; end if;
а MSSQL
if i=1 SET i=2
А потом читают код друг друга и ругаются :). Вывод прост - пишите так, как написано в BOL и Oracle documentation. Тогда будет меньше вопросов и претензий.
9 фев 12, 14:56    [12062815]     Ответить | Цитировать Сообщить модератору
 Re: Объясните разницу в запросх  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
Ага...
select	a.*
,	b.*
,	a.ora_rowscn
,	b.ora_rowscn
from	dual a, dual b 
where	a.dummy = b.dummy

----------------------------------------------
DUMMY DUMMY ORA_ROWSCN ORA_ROWSCN
X X 167300517360 167300517360
select	a.*
,	b.*
,	a.ora_rowscn
,	b.ora_rowscn
from	dual a join dual b 
on	a.dummy = b.dummy

---------------------------------------------
ORA-00904. Недопустимый идентификатор.
9 фев 12, 15:22    [12063117]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить