SQL Server 2005/2008 を使用して、BB_MEDIAOBJECT (Id, ...)
の他のいくつかのデータ フィールドを含むmediaobjects
テーブルBB_COLLECTION (Id, Name, Description)
、約 30 のコレクションが定義されているテーブル、およびBB_MEDIAOBJECT_COLLECTION (MediaObjectId, CollectionId)
各コレクション内のすべてのアイテムを一覧表示するテーブルがあります。
mediaobjects
コレクションごとに最初の 10 個を返す SQL クエリを定義する方法を教えてください。
Marc から提供された回答に基づいて、次の最終結果になりました。このクエリでは、最近変更された 10 個のアイテムが正しく表示されるようになりました。
;WITH PartitionedComponents AS
(
SELECT
CollectionID = c.ID,
c.Name,
c.Description,
MediaObjectId = m.ID,
ROW_NUMBER() OVER(PARTITION BY c.ID ORDER BY m.modifiedby DESC) AS 'RowNum'
FROM
dbo.BEELDBANK_COLLECTION c
INNER JOIN
dbo.BEELDBANK_MEDIAOBJECT_COLLECTION mc ON mc.CollectionId = c.ID
INNER JOIN
dbo.BEELDBANK_MEDIAOBJECT m ON mc.MediaObjectId = m.Id
)
SELECT
CollectionID,
Name,
Description,
MediaObjectId
FROM
PartitionedComponents
WHERE
RowNum <= 10