1. 程式人生 > >關於無限級分類的sql語句操作

關於無限級分類的sql語句操作

還是關於樹的演算法問題。是樹結構就涉及到遞迴的問題。

眾所周知,遞迴是演算法中除圖演算法外最複雜的一種,關鍵是在於思想的理解!

另一方面,遞迴演算法,堆疊呼叫開銷相對來說很大。

最近,發現現在很多專案都涉及到這個,樹型結構資料報表,樹型下拉框,無限級版塊分類等等

在實際開發中也很常見。

下面例子中的childs為nvarchar型,儲存改目分類下的所有分類專案,寫了個函式自動生成

這時,如果想知道某版塊下的所有的帖子(包含子版塊)
exec 'select * from t_board where [email protected] or boardid in (@childids)'
就可以了

--獲取所有的下級分類,末尾帶,createfunction[dbo].[fn_get_childids](@bidint)
returnsnvarchar(100)
asbegindeclare@rnvarchar(100)
    
set@r=''declare@tmpintdeclare cur cursorforselect boardid from t_board where preid=@bidopen cur
    
fetchnextfrom cur into@tmpWHILE (@@FETCH_STATUS<>-1)
    
BEGINset@r=@r+cast(@tmpas
nvarchar(10)) +','set@r=@r+ dbo.fn_get_childids(@tmp)
       
FETCHNEXTFROM cur INTO@tmpENDclose cur
    
deallocate cur
    
return (@r)
    
/*
        update t_board set childids=dbo.fn_get_childids(boardid)
        update t_board set childids=left(childids,len(childids)-1) where childids <>''
    
*/end--
獲取所有上級分類,末尾不帶,createfunction[dbo].[fn_get_preids](@bidint)
returnsnvarchar(100)
asbegindeclare@rnvarchar(100)
    
set@r=''declare@pidintset@pid=@bidwhile@pid>0beginselect@pid=preid from t_board where boardid=@pid--print @pidif(@pid>0set@r=@r+cast(@pidasnvarchar+','endif@r<>''set@r=left(@r,len(@r)-1)
    
return (@r)
end

相關推薦

關於無限分類sql語句操作

還是關於樹的演算法問題。是樹結構就涉及到遞迴的問題。 眾所周知,遞迴是演算法中除圖演算法外最複雜的一種,關鍵是在於思想的理解! 另一方面,遞迴演算法,堆疊呼叫開銷相對來說很大。 最近,發現現在很多專案都涉及到這個,樹型結構資料報表,樹型下拉框,無限級版塊分類等等 在實際開發中

無限分類之查找子孫樹

return inux ati code arr == merge ade find 1 <?php 2 header("Content-Type:text/html;charset=utf-8"); 3 $cate=array( 4 array(

JAVA中用 SQL語句操作小結

update 數據類型 where條件 ring 行數 實用 英文 delet date 1、添加記錄(INSERT) 使用SQL語句的INSERT命令可以向數據庫中插入記錄,INSERT命令的基本形式為: INSERT INTO 表名 [(字段名1,字段名2…)] VAL

Shell腳本中執行sql語句操作

out ins host source con more char 演示 -1   這篇文章主要介紹了Shell腳本中執行sql語句操作mysql的5種方法,本文講解了將SQL語句直接嵌入到shell腳本文件中、命令行調用單獨的SQL文件、使用管道符調用SQL文件等方法,需

sql 語句操作,修改字段中字符串的一部分

ron str web ebe pda rep 字符 ace replace update 表名 set 字段=replace(字段,‘替換的部分’,‘替換後的字符串’); update 表名 set A=replace( A, ‘海澱‘, ‘朝陽‘) where A li

[收集] 各式各樣的 無限分類 的數據庫設計方案

where 數據庫 位數 sel 其中 三級 mat sco tiny 第一種方案: 表為兩張,一張分類表,一張信息表。 表1: `ID` int(10), `cID` tinyint(3) , `title` varchar(255), 表2:`cID` tinyint(

MyBatis無限分類實現的兩種方法--自關聯與map集合

except app exce utf-8 elf findall ldr ati tex 1、這回先創建數據庫吧 下表cid是CategoryId的縮寫,cname是CategoryName的縮寫,pid是parentId的縮寫 無限級分類一般都包含這三個屬性,至少也要包

第八章,用SQL語句操作數據

values 通過 select語句 sql 定義 開頭 更新數據 算數運算 優先級 SQL的組成: (1)DML(Data Manipiation Language ,數據操作語言,)用來插入,修改和刪除數據庫中的數據,如:INSERT,UPDATE,DELETE等。

mysql 無限分類

ble 包含 each highlight update 名稱 ray 是否 script 兩種思路吧,遞歸 和 非遞歸 遞歸 $arr = [ 1=>[‘id‘=>1,‘pid‘=>0], 2=>[‘id‘=>2,‘pid‘

使用T-SQL語句操作數據表-插入數據

行數 不能 字符 但是 列表 插入 設計 數位 check約束 插入數據(insert)語法:insert [into] <表名> [列名] values <值列表>解釋:insert :是語法名,插入的意思into:是選填的,可以省略。

使用T-SQL語句操作數據表-刪除數據

語句 但是 sql truncate 表格 內容 表名 刪除表格 rom 1.使用 delete 語句刪除表中的數據:語法:delete from <表名> [where <刪除條件>]delete 是刪除的意思 where是選填內容可以

使用T-SQL語句操作數據表-查詢數據

成績表 例子 別名 默認 分數 from having lec ade 查詢(select)的基本格式:select <列名> from <表名> [where <查詢限定條件>]解釋:select 查詢的命令體列名:要查詢

MySQL基礎入門學習【9】無限分類表設計

父親 連接 參照物 insert gpo 平板電視 生活電器 type mysql 比如: 圖書/小說、文學.../四大名著、戲曲.../... 理論上可以設計很多張表; 但是隨著分類逐步增多,這些表的數目不可能無限擴展; 所以對於無限級分類表一般我們采用如下形式(通過自身

使用T-SQL語句操作視圖

word tail 分享 判斷 from eat student span ref 轉自:使用T-SQL語句操作視圖 提示:只能查看,刪除,創建視圖,不能對數據進行增,刪,改操作。 use StuManageDB go --判斷視圖是否存在 if exists

SQL語句操作數據

大小寫 存在 dcl 算數運算 變量 UC 函數 creat nio 使用T-SQL插入數據 1.SQL簡介 (1)SQL是什麽 structured Query Language:結構化查詢語句 *不區分

設計一個無限分類的數據表

互聯 body varchar space 語句 HR creat line pla 設計一個無限級分類的數據表是一個很常見的數據庫任務。比如你寫一個CMS,需要有4,5級分類的欄目,反正就是很普遍,所以還是需要了解一下。下面本專題的所有內容,都是我自己隨手演示寫寫,僅僅供

PHP實現無限分類

RR set pan src 浙江省 IT bubuko func 無限 function generateTree(){ $items = array( 1 => array(‘id‘ => 1, ‘pid‘

php實現無限分類的兩種方式

@param HP 獲取 velt 分類 get gets key turn 一、梯式: 代碼: /* @desc:獲取梯式分類 @param data 需要轉換的數據 @param pkey 上級的鍵名 @param key 主鍵名 @param pid 頂級id @p

SQL語句操作數據------解析

解析 語句 錯誤 表名 標識 組成 nio 分隔 數據 一.SQL 結構化查詢語言 1.T-SQL 和 SQL的關系 T-SQL是SQL的增強版 2.SQL的組成 2.1 DML (數據操作語言) 增加,修改,刪除等數據操作 2.2 DCL (數據控制語言) 存儲許可,存儲

mysql系列詳解二:sql語句操作-技術流ken

option art sql con student redundant cascade 枚舉 創建索引 1.簡介 本篇博客將詳細講解mysql的一些常用sql語句操作,例如創建數據庫,刪除數據庫,創建表,修改表,刪除表,以及簡單查詢案例。 2.關於mysql數據中的S