亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sql獲取父類下數據,包括子類的

sql獲取父類下數據,包括子類的

SMILET 2018-07-26 08:09:32
分類表有id,classname,parid,parpath四個字段,其中parpath記錄頂級分類到自己的路徑,例如:0,1,2,3,信息表有categoryid字段,用來跟分類表相關聯,先在要查找某個分類(不確定哪個)包括子類的數據,然后按id倒序排序,取10條即可。 請問大蝦們語句應該如何寫,可以建立索引,速度越快越好哇??!
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

你好,你這個很有代表性,對于一個表中有父子節點這種情況很常見,我在這兒給出我的權限配置中的模塊管理中的一段sql函數,可自動得到這種情況,供你參考。兄弟,可是我的商業代碼喲,給你分享出來了,你這50分的園丁是不是應該給我呢?

/****** Object:  UserDefinedFunction [dbo].[FN_GetSubModule]    Script Date: 07/30/2012 15:56:42 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO--查詢所有子模塊的表值函數CREATE FUNCTION [dbo].[FN_GetSubModule] (@id AS INT )RETURNS @temp TABLE
    (      [id] INT ,      [parentid] INT ,      [Code] NVARCHAR(50) ,      [FullName] NVARCHAR(200) ,      [Category] NVARCHAR(50),      [ImageIndex] NVARCHAR(50),      [Target] NVARCHAR(100),      [IsPublic] INT,      [SortCode] INT,      [levels] INT --levels表示欄目層次的,是必須有的!    )AS 
    BEGIN        
        DECLARE @level AS INT    --聲明一個變量,用于保存欄目信息層次索引
        SELECT  @level = 0
        INSERT  INTO @temp
                SELECT  Id,
                        ParentId ,
                        Code ,
                        fullName ,
                        Category,
                        ImageIndex,
                        Target,
                        IsPublic,
                        SortCode,                        @level
                FROM    dbo.PiModule                WHERE   Id = @id AND DeleteMark = 0
    --先根據id獲取根據節點的數據,@level初始為0,表示根目錄
        WHILE @@rowcount > 0 
            BEGIN
                SET @level = @level + 1      
                INSERT  INTO @temp
                        SELECT  a.id ,
                                a.ParentId ,
                                a.Code ,
                                a.FullName ,
                                a.Category,
                                a.ImageIndex,
                                a.Target,
                                a.IsPublic,
                                a.SortCode,                                @level
                        FROM    PiModule a                                INNER JOIN @temp t ON a.parentid = t.id                                                      AND t.levels = @level - 1   
                                                      AND a.DeleteMark = 0          
            END 
        RETURN    
    ENDGO


查看完整回答
反對 回復 2018-07-30
  • 2 回答
  • 0 關注
  • 802 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號