質問

WHERE句の一部が「定数に等しい」条件を持つ場合、ANSI-92以前の構文(つまり、* =)を使用して左結合を指定する構文は何ですか? (この場合、100は定数です)

例:


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

この場合、「t1」に一致がない場合でも、派生テーブル「t」のすべてのレコードが必要です。 SeqNoの一致する行が 't'に存在しない場合、Select句でt1.IDがNULLを返すようにします。

受け取ったエラーは、「外部結合の両方の用語に列が含まれている必要があります」です。

今のところ、SQL Server 2005でこのクエリを実行していますが、最終的には古い結合構文を必要とするSybase実装に対して使用されます。

事前に感謝

役に立ちましたか?

解決

これでうまくいくと思いますが、確実にテストする必要があります:

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