powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как *= и *= сконвертировать в ansi outer join?
5 сообщений из 5, страница 1 из 1
Как *= и *= сконвертировать в ansi outer join?
    #38406173
Жмурик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста [полу]автоматический метод заменить *= и =* на left join и right join .
Спасибо.
...
Рейтинг: 0 / 0
Как *= и *= сконвертировать в ansi outer join?
    #38406449
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нанять студента и обучить.
...
Рейтинг: 0 / 0
Как *= и *= сконвертировать в ansi outer join?
    #38406564
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖмурикПодскажите пожалуйста [полу]автоматический метод заменить *= и =* на 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
Как *= и *= сконвертировать в ansi outer join?
    #38407057
Жмурик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мастер Цив

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

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

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

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

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

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


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