我有 3 张表Book Master、Category Master、Subcategory Master。在我的Book Master表中,列CategoryName
的值来自Category Master的ID
列。Book Master中的SubcategoryName
列具有来自Subcategory Master的列值。ID
3张表的表结构:
书主
Oid uniqueidentifier,
BookName nvarchar(100),
CategoryName uniqueidentifier,
SubCategoryName uniqueidentifier
类别大师
Oid uniqueidentifier,
CategoryName nvarchar(100)
子类别大师
Oid uniqueidentifier,
CategoryName uniqueidentifier,
SubCategoryName nvarchar(100)
我正在开发一个 Windows 应用程序,因为我必须显示每个书籍类别中的前 5 本书。现在我在表中有 10 条记录,我使用以下查询在表单上显示书籍。
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 子句中。
建议我为此提供任何解决方案。提前致谢