有两张表,
table1:
[CategoryID] 分类的ID
[ParentID] 上级分类的ID,一级分类的这一列为0
[CategoryName] 分类的名称
[HiberarchyCode] 层次代码,例如一级分类为001,他下面的子分类就会记成001001,001002这样的
table2:
[ResID] 资源ID
[CategoryID] 分类ID
现在想获得所有一级分类所包含的资源数
类似于这样的结果
哲学、宗教 | 100 |
政治、法律 | 200 |
历史、地理 | 300 |
Select K.IDCount, L.CategoryName from
(Select count(M.ResID) as IDCount, LEFT(N.HiberachyCode,3) as HiberachyCode from
Table2 M inner join Tabl1 N
ON M.CategoryID=N.CategoryID
group by LEFT(N.HiberachyCode,3) )K
inner join Table1 L
on K.HiberachyCode=L.HiberachyCode
差不多是这个样子,思路给了,你自己对着SQL SERVER试验一下就有了。
Select K.IDCount, L.CategoryName from
(Select count(M.ResID) as IDCount, LEFT(N.HiberachyCode,3) as HiberachyCode
from Table2 M inner join Table1 N
ON M.CategoryID=N.CategoryID
group by LEFT(N.HiberachyCode,3) )K
inner join Table1
on K.HiberachyCode=L.HiberachyCode
错误:
消息 207,级别 16,状态 1,第 5 行
列名 'HiberachyCode' 无效。
消息 207,级别 16,状态 1,第 2 行
列名 'ResID' 无效。
消息 207,级别 16,状态 1,第 2 行
列名 'HiberachyCode' 无效。
消息 4104,级别 16,状态 1,第 2 行
无法绑定由多个部分组成的标识符 "L.HiberachyCode"。
消息 4104,级别 16,状态 1,第 2 行
无法绑定由多个部分组成的标识符 "L.CategoryName"。
@最长的路漫漫:
没有字段你找我有用吗?你自己先看看Table1和Table2的定义是不是和你问题里面的一样啊。
@爱编程的大叔: 是我把列名写错了,这个是正确的
加一个级别列吧