Синтаксис соединения по левому краю ДО ANSI-92 (Sybase)

StackOverflow https://stackoverflow.com/questions/604045

  •  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, чтобы лучше указать, какая часть является левой стороной соединения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top