多级分类的sql编写

首先我需要查一级分类。需要判断一级分类下有没有商品。但是一级分类不能直接查。因为有二级分类。二级分类与一级分类处于一个表。有一个字段parent_id表示他们的关系。一级分类此字段为空。二级分类此字段有一级分类的id。需要用sql判断一级分类下有没有商品。有输出一级分类没有不输出,商品表中都是关联的二级分类。这sql怎么写,求大佬告知,感谢

这是表的现有数据:

通过sql查询结果:

sql:

select yi.* 

from(select distinct parent_id pid from products a where a.`parent_id`>0) er

left join products yi on er.pid=yi.`id`;

先通过查询表中parent_id不为空的(表中parnet_id字段类型设置的整型同id,所以直接用>0判断了),然后使用distinct查重,获取对应的parent_id,再去关联该表查询出结果即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-19
select SegmentId,SegmentId,ProjectType , sum(col) from
(
select SegmentId,SegmentId,ProjectType........from a,b,c,d where...........
) t
group by SegmentId,SegmentId,ProjectType
with rollup
意思是将要统计的字段合成一个为子表,然后对这个字表进行group by!本回答被网友采纳
第2个回答  2019-03-19
--用的时候把vagetabel 这个表换成你自己的就行了、
declare @name nvarchar(200)

select @name='苹果'--输入品名

;
WITH getname
AS
(
SELECT a.id,a.parentid,A.name,0 as lvl,case  when a.parentid is null then CONVERT(NVARCHAR(200),'无上级') else  CONVERT(NVARCHAR(200),a.parentid) end AS  PNAME  FROM [vagetabel] a
WHERE a.name = @name
UNION ALL
SELECT CTE.id,CTE.parentid,cte.name,lvl+1 as lvl,CONVERT(NVARCHAR(200),ca.NAME+'/'+cte.name+'/') as  pname FROM getname Ca
INNER JOIN [vagetabel] CTE ON CTE.id=ca.parentid  
)
select 菜单级别=(SELECT ''+name +'/'  from getname for XML path (''))

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网