PRE ANSI-92 Синтаксис левого соединения (Sybase) - PullRequest
0 голосов
/ 03 марта 2009

Каков синтаксис для определения левого соединения с использованием предварительного синтаксиса 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, для которой требуется старый синтаксис объединения.

спасибо заранее

1 Ответ

0 голосов
/ 03 марта 2009

Я думаю, что это сработает, но вам нужно проверить, чтобы убедиться:

SELECT t1.ID, t.* 
FROM (select * from SybaseTable where ID=1) t, SqlServerTable t1
WHERE t.SeqNo *= t1.SeqNo AND 100 *= t1.ID

Обратите внимание, что я изменил порядок в части SeqNo, чтобы лучше обозначить левую сторону соединения.

...