Book Master、Category Master、Subcategory Masterの3 つのテーブルがあります。私のBook Masterテーブルでは、列にはCategory Masterの列CategoryName
からの値があります。Book Masterの列には、Subcategory Masterからの列の値があります。ID
SubcategoryName
ID
3 つのテーブルのテーブル構造:
ブックマスター
Oid uniqueidentifier,
BookName nvarchar(100),
CategoryName uniqueidentifier,
SubCategoryName uniqueidentifier
カテゴリーマスター
Oid uniqueidentifier,
CategoryName nvarchar(100)
サブカテゴリマスター
Oid uniqueidentifier,
CategoryName uniqueidentifier,
SubCategoryName nvarchar(100)
私は、書籍の各カテゴリから上位 5 冊の本を表示する必要があるという点で、1 つの Windows アプリケーションで作業しています。
select BM.BookName ,BM.BookImage,CM.CategoryName,SCM.SubCategoryName
from BookMaster BM,CategoryMaster CM,SubCategoryMaster SCM
where BM.CategoryName=CM.Oid and BM.SubCategoryName=SCM.Oid
order by CM.CategoryName
このクエリでは、10 件すべてのレコードが得られます。ただし、テーブル内のレコードが少ない場合、このクエリは問題ありません。しかし、記録がどんどん増えていくと、すべての記録を表示することは難しくなります。このため、各カテゴリの上位 5 冊を表示したいと思います。
group by 句で試しました
select top 5 BM.BookName ,BM.BookImage,CM.CategoryName,SCM.SubCategoryName
from BookMaster BM,CategoryMaster CM,SubCategoryMaster SCM
where BM.CategoryName=CM.Oid and BM.SubCategoryName=SCM.Oid
group by CM.CategoryName
しかし、それは私に言うエラーを与えます、
列 'BookMaster.BookName' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。
これに対する解決策を提案してください。前もって感謝します