個々のアイテムの履歴の最新を取得し、それを1つの行に返すビューを作成しようとしています。このクエリは正常に動作し、私が欲しいものを正確に返しますが、私はビューに変換しようとすると、それは私がサブクエリを使用せませんビュー内の最新のテーブルを取得する
SELECT item_pk.Id Id, item_name.Value Name
FROM item_pk
JOIN
(
SELECT * FROM item_name
ORDER BY Occurred DESC
) item_name ON item_name.Id = item_pk.Id
GROUP BY item_pk.Id
:ように私は実行したいクエリが見えます。私が試してみると:
CREATE VIEW item_name_latest AS SELECT * FROM item_name ORDER BY Occurred DESC;
CREATE VIEW item AS SELECT item_pk.Id Id, item_name.value Name
FROM item_pk
JOIN item_name_latest item_name ON item_name.Id = item_pk.Id
GROUP BY item_pk.Id
item
ビューが間違った結果になります。私が得た結果は、修正された注文を生成する中間のビューを使わずに直接item_name
に参加した場合とまったく同じです。つまり、1つのアイテムにつき最新の行をitem_name
から受け取るのではなく、最も古いものを受け取っています。 SELECT
ステートメントを(ビューではなく)直接呼び出すと、間違った結果が生成されます。
は、私は、次のデータを持っていると言う:
Id | Value | Occurred
1 Bob 1325697408000
1 Bobbie 1325697536000
2 Stuff 1325697822000
2 More Stuff 1325697823000
2 Latest Stuff 1325697824000
1 Roberta 1325697945000
期待された結果(所与のクエリとサブクエリの実際の結果)である:
1 Roberta
2 Latest Stuff
の実績ビューは次のとおりです。
1 Bob
2 Stuff
ビューで期待値を生成する方法はありますか、より良い方法があります。値を取得する?
正しい方向に私を指摘しました。私はこれらの履歴カラムのいくつかを単一のビューに結合する必要があったので、 'Item'を' Item_Name_Value'に名前を変更し、 'Item'テーブルに' JOIN'しました。ありがとう! –