Гость
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как *= и *= сконвертировать в ansi outer join? / 5 сообщений из 5, страница 1 из 1
24.09.2013, 15:24
    #38406173
Жмурик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как *= и *= сконвертировать в ansi outer join?
Подскажите пожалуйста [полу]автоматический метод заменить *= и =* на left join и right join .
Спасибо.
...
Рейтинг: 0 / 0
24.09.2013, 18:01
    #38406449
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как *= и *= сконвертировать в ansi outer join?
Нанять студента и обучить.
...
Рейтинг: 0 / 0
24.09.2013, 20:09
    #38406564
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как *= и *= сконвертировать в ansi outer join?
ЖмурикПодскажите пожалуйста [полу]автоматический метод заменить *= и =* на left join и right join .
Спасибо.

= -- это просто JOIN
*= -- это LEFT JOIN
=* -- это RIGHT JOIN

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

добавляешь во FROM
Код: plaintext
ВНЕШНЯЯ ТАБЛИЦА [LEFT] JOIN ВНУТРЕННЯЯ ТАБЛИЦА
(внешняя таблица обычно уже есть во FROM, только для первой пары нужно её добавлять)

добавляешь
Код: plaintext
ON условие1 and условие2 and ... and условиеN
-- все условия JOIN-а этих двух таблиц. Звёздочки из равенства естественно убираются.

оставшиеся условия из WHERE для внешних таблиц должны быть перенесены внутрь соответствующего JOIN, во фразу ON. Иначе JOIN для этой таблицы эффективно не будет OUTER.

Заметка: В нормальной жизни все JOIN-ы должны быть либо
Код: plaintext
X JOIN Y 
, либо
Код: plaintext
X LEFT JOIN Y
, RIGHT JOIN быть не должно. Просто потому, что таблицы можно поменять местами и RIGHT заменить на LEFT.
...
Рейтинг: 0 / 0
25.09.2013, 12:31
    #38407057
Жмурик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как *= и *= сконвертировать в ansi outer join?
Мастер Цив

Вы еще не рассказали об условиях, не относящихся к связке таблиц, такие условия не всегда можно оставить в WHERE...

Но вопрос про [полу]автоматизацию этого процесса, а не про теорию...
...
Рейтинг: 0 / 0
25.09.2013, 13:36
    #38407159
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как *= и *= сконвертировать в ansi outer join?
ЖмурикМастер Цив

Вы еще не рассказали об условиях, не относящихся к связке таблиц, такие условия не всегда можно оставить в WHERE...

Но вопрос про [полу]автоматизацию этого процесса, а не про теорию...

Я рассказал, и рассказал, когда их надо переносить в JOIN.

автоматизация -- ну, напиши небольшой парсер, на, скажем, питоне. Или ANTLR/Java.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как *= и *= сконвертировать в ansi outer join? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]