家譜整站源碼php_mysql家譜表查詢某人所有后代

CREATE TABLE `people` (

`id` INT(11) NOT NULL,

`name` VARCHAR(50) NULL DEFAULT NULL,

`pid` INT(11) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`)

);

CREATE DEFINER=`root`@`%` PROCEDURE `getChildren`(IN `parentId` INT)

LANGUAGE SQL

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT '獲取某人所有后代'

BEGIN

#存放結果的臨時表

DROP TABLE IF EXISTS children;

CREATE TEMPORARY TABLE children SELECT 0 pLevel,p.* FROM `people` p WHERE id=parentId;

#存放中間結果的臨時表

DROP TABLE IF EXISTS tem;

CREATE TEMPORARY TABLE tem SELECT id FROM `people` limit 0;

#逐級填充后代

SET @pLevel=1;

REPEAT

#清空上次數據

TRUNCATE TABLE tem;

#將當前level的后代id放入臨時表

INSERT INTO tem SELECT p.id FROM `people` P, children c

WHERE p.pid=c.id AND c.pLevel=(@pLevel-1);

#將當前level的后代數據塞入結果臨時表

INSERT INTO children SELECT @pLevel pLevel,p.* FROM `people` p, tem t

WHERE p.id=t.id;

SET @pLevel=@pLevel+1;

UNTIL NOT EXISTS (SELECT * FROM tem) OR @pLevel > 10

END REPEAT;

#調整表結構,刪除臨時列和不需要的數據

ALTER TABLE children DROP COLUMN pLevel;

DELETE FROM children WHERE id=parentId;

#返回結果

SELECT * from children;

END

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

React 入門學習筆記2

摘自阮一峰:React入門實例教程,轉載請注明出處。 一、獲取真實的DOM節點 組件并不是真實的 DOM 節點,而是存在于內存之中的一種數據結構,叫做虛擬 DOM (virtual DOM)。只有當它插入文檔以后,才會…

c語言getchar函數_C語言中帶有示例的getchar()函數

c語言getchar函數C語言中的getchar()函數 (getchar() function in C) The getchar() function is defined in the <stdio.h> header file. getchar()函數在<stdio.h>頭文件中定義。 Prototype: 原型&#xff1a; int getchar(void);Parameters: FILE *filename(f…

python及pycharm

1.python簡介&#xff1a; Python是一種計算機程序設計語言。是一種動態的、面向對象的腳本語言&#xff0c;最初被設計用于編寫自動化腳本(shell)&#xff0c;隨著版本的不斷更新和語言新功能的添加&#xff0c;越來越多被用于獨立的、大型項目的開發。 python最重要的功能&am…

anaconda如何更改環境配置_手把手教新手安裝Anaconda配置開發環境

Anaconda是針對Python的集成環境&#xff0c;它已經成為全球數千萬數據科學從業人員必備的開發工具&#xff0c;幫助人們有效地解決數據科學和機器學習相關地問題。如果你想從事數據科學和機器學習的工作&#xff0c;可以從本文開始&#xff0c;了解一下如何安裝Anaconda。1. 初…

詳解摘要認證

1. 什么是摘要認證摘要認證與基礎認證的工作原理很相似&#xff0c;用戶先發出一個沒有認證證書的請求&#xff0c;Web服務器回復一個帶有WWW-Authenticate頭的響應&#xff0c;指明訪問所請求的資源需要證書。但是和基礎認證發送以Base 64編碼的用戶名和密碼不同&#xff0c;在…

Python的基礎知識

1.注釋&#xff1a; #單行注釋ctrl / 批量注釋&#xff0c;選中需要注釋的所有行ctrl / 批量取消注釋&#xff0c;選中已經被注釋的所有行 塊注釋&#xff1a;上下各三個雙引號的部分全部被注釋 “”“ hello haha ”“”2.變量&#xff1a; 變量命名的規則&#xff1a; …

樹莓派該文件名_樹莓派:文本編輯器與文件

GNU nano是Unix系統下一款常用的文本編輯器&#xff0c;以簡單易用著稱。與之相比&#xff0c;功能更強大的Vi和Emacs編輯器&#xff0c;學習曲線比nano陡峭很多。由于nano對于一般的文本編輯來說已經足夠&#xff0c;所以我想簡單介紹一下&#xff0c;以便于更好入門。基本使用…

Java SimpleTimeZone setStartYear()方法與示例

SimpleTimeZone類setStartYear()方法 (SimpleTimeZone Class setStartYear() method) setStartYear() method is available in java.util package. setStartYear()方法在java.util包中可用。 setStartYear() method is used to set the DST (Daylight Savings Time) starting y…

報表在IBM AIX系統下resin部署

&#xfeff;&#xfeff;報表是用java開發的&#xff0c;具有良好的跨平臺性。不僅可以應用在windows、linux、操作系統&#xff0c;還可以應用在AIX等等的unix操作系統。在各種操作系統上部署過程有一些差別。下面說一下在AIX操作系統的部署的步驟。 1. 首先&#xff0c;下載…

python——if語句、邏輯運算符號

1.if條件判斷語句&#xff1a; if 要判斷的條件(True):條件成立的時候&#xff0c;要做的事情 elif 要判斷的條件(True):.... elif 要判斷的條件(True):.... else:條件不成立的時候要做的事情示例&#xff1a; 判斷學生分數等級&#xff1a; 100——90&#xff08;包括90&…

sox處理mp3_使用SoX將mp3文件拆分為TIME秒

I need to split mp3 file into slices TIME sec each. Ive tried mp3splt, but it doesnt work for me if output is less than 1 minute.Is it possible do do with:sox file_in.mp3 file_out.mp3 trim START LENGTHWhen I dont know mp3 file LENGTH解決方案You can run SoX…

Java ObjectOutputStream writeInt()方法及示例

ObjectOutputStream類writeInt()方法 (ObjectOutputStream Class writeInt() method) writeInt() method is available in java.io package. writeInt()方法在java.io包中可用。 writeInt() method is used to write the given 4 bytes of an integer value. writeInt()方法用于…

移動端適配方案(上)

轉載自:https://github.com/riskers/blog/issues/17 要搞懂移動端的適配問題&#xff0c;就要先搞明白像素和視口。 像素 在移動端給一個元素設置 width:200px 時發生了什么&#xff1f;這里的px到底是多長呢&#xff1f;像素是網頁布局的基礎&#xff0c;但是我們一直在用直覺…

python——rang函數、for、braek循環

rang函數&#xff1a; start: 計數從 start 開始。默認是從 0 開始。例如range&#xff08;5&#xff09;等價于range&#xff08;0&#xff0c; 5&#xff09;; stop: 計數到 stop 結束&#xff0c;但不包括 stop。例如&#xff1a;range&#xff08;0&#xff0c; 5&#xf…

Java文件類boolean isHidden()方法(帶示例)

文件類boolean isHidden() (File Class boolean isHidden()) This method is available in package java.io.File.isHidden(). 軟件包java.io.File.isHidden()中提供了此方法。 This method is used to check whether the file is hidden or not. 此方法用于檢查文件是否隱藏。…

js導出的xlsx無法打開_js-xlsx 導出表格至excel

引入js文件下載地址&#xff1a;鏈接: https://pan.baidu.com/s/1gdOl1HnTrM5mZgPgd5qeDQ 提取碼: c8js導入4個js文件js/xlsx.extendscript.js,js/xlsx.full.min.js,js/export.js,js/jszip.js,js/xlsx-style/xlsx.full.min.js其中 js/xlsx-style/xlsx.full.min.js 是表格樣式的…

oracle sql 語句如何插入全年日期?

為什么80%的碼農都做不了架構師&#xff1f;>>> oracle sql 語句如何插入全年日期&#xff1f; create table BSYEAR (d date); insert into BSYEAR select to_date(20030101,yyyymmdd)rownum-1 from all_objects where rownum < to_char(to_date(20031231,…

getparent_Java文件類字符串getParent()方法(帶示例)

getparent文件類字符串getParent() (File Class String getParent()) This method is available in package java.io.File.getParent(). 軟件包java.io.File.getParent()中提供了此方法。 This method is used to return the parent of the given file object(i.e In case of f…

python—while循環、字符串

1. while循環&#xff1a; while 條件滿足&#xff1a;滿足條件執行的語句 else:不滿足條件執行的語句while 死循環 只要滿足 while的條件永遠為真&#xff0c;就會進入無限循環 while True:print(一直循環)while嵌套 \t &#xff1a;在控制臺輸出一個制表符&#xff0c;協助…

java基礎——java基本運算

java基本運算 轉載于:https://www.cnblogs.com/zhouj/p/6132535.html