首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

求一条SQL语句,多谢

2012-06-01 
求一条SQL语句,谢谢大家好,求一条SQL语句,以下是说明:一张商品表 T_Goods(GoodsId,StoreId)一张商品分类表

求一条SQL语句,谢谢
大家好,求一条SQL语句,以下是说明:

一张商品表 T_Goods(GoodsId,StoreId) 
一张商品分类表:T_GoodsType(TypeId,ParentId,TypeName) (分类只有两级)ParentId=0 为父级
一张商品和分类相关表,因为商品和分类是多对多的关系:T_GoodsRe_Type(GoodsId,TypeId)
一张专卖店表 T_Store(StoreId)
现在提供一个专卖店ID(StoreId),查这个专卖店下面存在的商品的商品分类。

SELECT TypeId,ParentId,TypeName FROM T_GoodsType WHERE EXISTS(SELECT TypeId FROM T_GoodsRe_Type WHERE (T_GoodsRe_Type.TypeId=T_GoodsType.TypeId) AND EXISTS(SELECT GoodsId FROM T_Goods WHERE T_Goods.GoodsId=dbo.T_GoodsRe_Type.GoodsId AND StoreId=14))
以上这条语句可以查出所有子类,但无法查询出父类,在不用union all 的情况下有没有好的办法解决,ths!

[解决办法]
你可以建视图嘛,多省事
[解决办法]
用视图。
[解决办法]
用视图的设计界面用鼠标点,点出来Sql就出来了
[解决办法]
很简单。

如果出于性能考虑,GoodsType加个字段比如Path。

用来保存当前的上下级的id

比如2的下级是1和3
那么1的path 就是,2,1,
那么3的path 就是,3,1,

查询父类别的时候 like ',自己的id,%' 这样就可以得到自己和所有下级栏目。
[解决办法]
如果懒又是sqlserver 2005,可以用新功能 -- with 关键字。
[解决办法]
即使用 WITH 关键字时,要是采用递归方式的话还是用了 union all;
看来只能另加字段来标注了
[解决办法]

SQL code
因为只有两级declare @StoreID int;with w_type as (select B.TypeID,C.ParentID from T_Goods A     inner join T_GoodsRe_Type B on A.GoodsID=B.GoodsID     inner join T_GoodsType C on C.TypeID=B.TypeID where StoreID=@StoreID)select distinct TypeID from (select B.TypeID from w_type union allselect B.TypeID from w_type A inner join T_GoodsType B on A.ParentID=B.TypeID) A 

热点排行