Синтаксис соединения по левому краю ДО ANSI-92 (Sybase)
-
03-07-2019 - |
Вопрос
Каков синтаксис для указания левого соединения с использованием синтаксиса до ANSI-92 (т. е.*=) когда часть предложения Where имеет условие "равно некоторой константе"?(в данном случае 100 - это константа)
Пример:
SELECT t1.ID, t.*
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t1.ID *= 100 and t1.SeqNo *= t.SeqNo
В этом случае мне нужны все записи из производной таблицы 't', даже если 't1' не имеет совпадения.Я хочу, чтобы t1.ID возвращал значение NULL в предложении Select, когда соответствующая строка в SeqNo не существует в 't'.
Ошибка, которую я получаю, заключается в том, что "Оба термина внешнего соединения должны содержать столбцы".
Пока я выполняю этот запрос в SQL Server 2005, но в конечном итоге он будет использоваться против реализации Sybase, для которой требуется старый синтаксис join.
заранее благодарю
Решение
Я думаю, что это сработает, но вам придется протестировать, чтобы быть уверенным:
SELECT t1.ID, t.*
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID
Обратите внимание, что я изменил порядок в части SeqNo, чтобы лучше указать, какая часть является левой стороной соединения.