2 つのテーブルがあります (SQL サーバー):
errorcode(code, utctime, fileversion)
errordescr(code, fileversion, description)
errorcode
特定の utctime での障害の履歴が含まれています。
エラーは、errordescr テーブルの説明にマップされます。
バージョンがテーブルに存在しない場合は、デフォルトの fileversion 値 (defaultversion) を使用したいerrordescr
ので、特定のエラーのデフォルトの説明を取得できます。
- にエラーのファイルバージョンが存在するerrordescr
が、コードが に登録されてerrordescr
いない場合、説明に NULL を返したい、「defaultversion」からデフォルトの説明を取得したくない。
私の問題は、クエリを実行すると、正しいバージョンに説明がある場合でも、「defaultversion」から一致が得られることです。
ありがとう
SELECT TOP 50000 sn, utctime, mydb.dbo.error.code, description FROM mydb.dbo.error
LEFT OUTER JOIN mydb.dbo.errordescr
ON(
(
mydb.dbo.error.fileversion=mydb.dbo.errordescr.fileversion
OR
mydb.dbo.errordescr.fileversion='defaultversion'
)
AND
mydb.dbo.error.code=mydb.dbo.errordescr.code
)
ORDER BY utctime DESC
例: エラーのあるエントリ:
1. code: 001, utctime: 1970-01-01 00:00:00:000, fileversion: v1.0
2. code: 002, utctime: 1970-01-01 00:00:00:000, fileversion: v2.0
3. code: 003, utctime: 1970-01-01 00:00:00:000, fileversion: v3.0
4. code: 002, utctime: 2000-01-01 00:00:00:000, fileversion: v1.0
errordescr のエントリ:
1. code: 001, fileversion: v1.0, description: "error code #1 from file v1.0"
2. code: 002, fileversion: v1.0, description: "error code #2 from file v2.0"
3. code: 003, fileversion: defaultversion, description: "error code #3 from default"
結果は次のようになります。
すべてのエラーを表示:
1. code: 001, utctime: 1970-01-01 00:00:00:000, fileversion: v1.0, description: "error code #1 from file v1.0"
2. code: 002, utctime: 1970-01-01 00:00:00:000, fileversion: v2.0, description: "error code #2 from file v2.0"
3. code: 003, utctime: 1970-01-01 00:00:00:000, fileversion: v3.0, description:"error code #3 from default"
4. code: 002, utctime: 2000-01-01 00:00:00:000, fileversion: v1.0, description: NULL