一个sql存储过程问题(较曲折)
外部变量 @ID (此值为表tbl_IndexFile的CategoryID)
tbl_CompanyFile:
CompanyID CompanyName CompanyProfile ...
1 公司名称一 公司介绍
2 公司名称二 公司介绍
3 公司名称三 公司介绍
tbl_ProductFile:
ProductID CompanyID ProductName ...
1 1 产品名称
2 1 产品名称
3 1 产品名称
4 1 产品名称
5 1 产品名称
(以上是公司名称一产品列表)
6 2 产品名称
7 2 产品名称
8 2 产品名称
9 2 产品名称
10 2 产品名称
(以上是公司名称二产品列表)
11 3 产品名称
tbl_CategoryFile:
CategoryID CategoryName ParentCategory(父级分类ID)
1 分类名称一 0
2 分类名称二 1
3 分类名称三 2
4 分类名称四 0
5 分类名称五 4
6 分类名称六 0
以上分类树以下结构:
分类名称一
|-------分类名称二
| |---------分类名称三
| |---------更多...
分类名称四
|-------分类名称五
|-------更多...
| |-------更多....
分类名称六
|
(可以看出,分类有可能一级分类下面有二级分类或者有三级分类,或者一级分类没有下级分类)
tbl_IndexFile:
IND ProductID CategoryID
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
7 3 1
8 3 2
9 3 3
10 4 4
11 5 5
(以上是公司名称一产品分类列表,可以看出,其实属于分类ID(CategoryID)1、2、3是最多的)
12 6 1
13 6 2
14 6 1
15 7 2
16 7 1
17 7 2
18 8 1
19 8 2
20 8 3
21 9 4
22 10 5
(以上是公司名称二产品分类列表,也可以看出,其实属于分类ID(CategoryID)1、2是最多的)
23 11 6
要求:(目前数据结构不能动了 :( )
依据tbl_CompanyFile表中的CompanyID找tbl_ProductFile表对应的CompanyID,就得到了tbl_CompanyFile表CompanyName所对应的产品列表,然后再依
据tbl_IndexFile表,得出产品所属分类最多CategoryID值,这一步就可得知某个公司的所有产品相对来说,产品所属分类最多的是那个分类,也就得到这个分类最
多的CategoryID值,然后这个最多的CategoryID值再与变量@ID比较,如果两个值相等,就返回某个公司的信息
备注:因为每个产品牵涉到一级或多级分类,所以不管点其中那一级分类,只要某个公司产品所属分类在点击的当级分类中是最多的(如果产品都属于一、二、三
个级别分类,就会出现三个最多了,当然这三个最多值其实是相等的)信息
比如:当变量 @ID=1 时,就会列出公司名称一与公司名称二的相应信息,当变量 @ID=2 时,也会列出公司名称一与公司名称二的相应信息,当变量 @ID=3时,
就只会列出公司名称一的相应信息
现在要一个sql存储过程,能解决以上问题,当然,如果同仁们有更好的解决方法,十分感谢!