"content"と "versioned-content-data"(たとえば、アーティクルエンティティとそのアーティクルで作成されたすべてのバージョン)という1対nの関係を持つ2つのテーブルがあります。 。私は各 "コンテンツ"のトップバージョンを表示するビューを作成したいと思います。SQLサブクエリを結合に変換する方法
現在、私は(簡単なサブクエリで)このクエリを使用します。
SELECT t1.id, t1.title, t1.contenttext, t1.fk_idothertable t1.version FROM mytable as t1 WHERE (version = (SELECT MAX(version) AS topversion FROM mytable WHERE (fk_idothertable = t1.fk_idothertable)))
サブクエリが実際に特定のアイテムの最新バージョンを抽出し、同じテーブルにクエリです。バージョン管理されたアイテムは同じfk_idothertableを持つことに注意してください。
は、SQL Serverでは、私はこのクエリのインデックス付きビューを作成しようとしましたが、サブクエリがインデックス付きビューで許可されていないので、私はできないんだそうです。だから...ここに私の質問です...あなたは、このクエリをJOINsを使った何らかのクエリに変換する方法を考えることができますか?
- サブクエリ
- 共通テーブル式を
- 派生テーブル
- HAVING句
私は必死だ:インデックス付きビューを含めることはできませんように
は、それはそうです。その他のアイデアは大歓迎です:-)
ありがとう!
サブクエリは正しいですか?参照しているテーブルが1つしかない –
はい、同一のテーブルのサブクエリで、同じfk_idothertableを共有するアイテムの最大バージョンを抽出します – sachaa
btw ... fk_idothertableはマスターテーブルの外部キーです – sachaa