首页 新闻 搜索 专区 学院

查询所有一级分类的资源

0
悬赏园豆:10 [已解决问题] 解决于 2014-05-05 17:17

有两张表,

table1:

[CategoryID] 分类的ID
[ParentID] 上级分类的ID,一级分类的这一列为0
[CategoryName] 分类的名称
[HiberarchyCode] 层次代码,例如一级分类为001,他下面的子分类就会记成001001,001002这样的

table2:

[ResID] 资源ID

[CategoryID] 分类ID

 

现在想获得所有一级分类所包含的资源数

类似于这样的结果

哲学、宗教 100
政治、法律 200
历史、地理 300
最长的路漫漫的主页 最长的路漫漫 | 菜鸟二级 | 园豆:252
提问于:2014-05-05 16:02
< >
分享
最佳答案
0

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试验一下就有了。

收获园豆:8
爱编程的大叔 | 高人七级 |园豆:30753 | 2014-05-05 16:17

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"。

最长的路漫漫 | 园豆:252 (菜鸟二级) | 2014-05-05 16:30

@最长的路漫漫: 

没有字段你找我有用吗?你自己先看看Table1和Table2的定义是不是和你问题里面的一样啊。

爱编程的大叔 | 园豆:30753 (高人七级) | 2014-05-05 16:34

@爱编程的大叔: 是我把列名写错了,这个是正确的

最长的路漫漫 | 园豆:252 (菜鸟二级) | 2014-05-05 16:42
其他回答(2)
0

加一个级别列吧

收获园豆:1
吴瑞祥 | 园豆:29185 (高人七级) | 2014-05-05 16:21
0
select t1.CategoryName, t2.c
  from table1 t1
  left join (
    select CategoryID, COUNT(CategoryID) as c
    from table2
    group by CategoryID
  ) t2 on t1.CategoryID = t2.CategoryID
  where t1.ParentID = 0
收获园豆:1
l3oz | 园豆:586 (小虾三级) | 2014-05-05 16:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册