を選択します。ここでは、部分サンプルです:SQL - 私はバージョンフィールドと速度テーブルを持っているの好適なバージョン
id milepost speed version
1 0 40 1
2 0 30 2
3 5 50 1
は基本的に、私は「優先バージョン」でクエリを実行したい:指定した速度バージョンで行(mileposts)をフェッチしようとすると、特定のmilepostがで見つからない場合そのバージョンは、デフォルトでバージョン1になります。 私の好みの速度のバージョンが2だったのであれば、例えば、私の結果は、行2及び3からの速度が含まれます
milepost speed
0 30
5 50
をしかし、どのように私はそれを行うには、単一のSELECTを構築することができますか? ありがとう、おはようございます。
EDIT:あなたの答えの 両方が解決策を見つけるために私にインスピレーションを与えてきました。以下は、完全なクエリではありませんが、アイデアを与える:
select s1.milepost_from milepost, s1.value speed from speeds s1
where s1.version = 2 or (s1.version = 1 and not exists
(select 1 from speeds s2 where s2.milepost_from = s1.milepost_from and s2.version = 2))
キーがメインの選択恒久的情報(例ではmilepost_from)に一致する副選択を行うことです。 ありがとうございました!
使用しているDBMSはどれですか? –
ご使用のデータベースに質問にタグを付けてください。 –
あなたは何を意味するのか分かりません。私が使用しているSQLの種類について話しているなら、Informix SQLのdbaccessツールを使用しています。 –