mysql の概念をテストするために warcraft オークション API をいじってサンドボックス コードをいじっていたところ、目的のビューを作成する際に問題が発生しました。2 つのテーブルを設定しました。1 つはブリザードからの実際のデータを格納するため、もう 1 つは更新をプルするたびに「lastModified」日付スタンプを追跡するためです。各オークション エントリは、指定された「lastModified」tstamp を持つ他のテーブルを指す「updateId」でタグ付けされます。私がやりたかったのは、MAX(lastModified) のすべての updateIds を検索するビューを作成し、その updateId に一致するすべてのオークション レコードを返すことでした。
このクエリを 2 つのビューに分割することで機能させることができましたが、1 つのビューに凝縮する方法があるかどうか疑問に思っていました。私が知っている唯一の構文は、「from」句の下に選択を含めることですが、mysqlはビューを作成するときにそれを好まないようです:
mostRecentUpdatesビュー:
SELECT
au.auctionUpdateId as auId,
au.lastModified,
au.realmId,
au.house
FROM
`AuctionUpdates` AS au
WHERE
(
au.`lastModified` = (
SELECT
MAX(lastModified)
FROM
`AuctionUpdates`
)
)
mostRecentAuctionsビュー:
SELECT
a.*,
mr.lastModified AS lastModified,
mr.realmId AS realmId,
FROM (
Auctions AS a
JOIN mostRecentUpdates AS mr
ON (a.updateId = mr.auId)
)
ORDER BY
a.updateId
最初の選択を 2 番目の JOIN にドロップすると、ビューとして保存されません。2 つではなく 1 つのビューに凝縮できるように、このクエリを実行する他の方法があるかどうか疑問に思っています。