小演员王沁曦
第一篇文章,从某个同行问我的问题开始。他的问题大概是这样的:自己已经用Oracle的Start with...Connect By实现了树的递归查询,但是现在要求变了,要用MYSQL也实现相同的递归查询树的功能。这个功能是我从以前从未使用到过的,于是,我上网查询、找了一些资料开始做了起来。我喜欢这种“自己每次在帮助了别人的同时又提高了自己”的进步,因为,我始终相信,会分享、会帮助别人的人注定海纳百川。到最后,功夫不多,总算给他提供了解决方案。我的解决方案只是针对同一个表,两个表只需要在方法里增加两个表的连接条件即可。下面是我的一些MYSQL最终代码可供解决参考:创建表nodelist:CREATE TABLE nodelist( id INT PRIMARY KEY, //本节点ID。 nodename VARCHAR(20), //节点名称,为方便辨别而已。 pid INT //父节点。 ); 插入表测试数据:Insert INTO nodelist VALUES(1,'A',null); //父节点为,即根节点。Insert INTO nodelist VALUES(2,'B',1); Insert INTO nodelist VALUES(3,'C',1); Insert INTO nodelist VALUES(4,'D',2); Insert INTO nodelist VALUES(5,'E',3); Insert INTO nodelist VALUES(6,'F',3); Insert INTO nodelist VALUES(7,'G',5); Insert INTO nodelist VALUES(8,'H',7); Insert INTO nodelist VALUES(9,'I',8); Insert INTO nodelist VALUES(10,'J',8); 创建函数getChildList(): CREATE FUNCTION `getChildList`(rootId INT) //rootId为你要查询的节点。 RETURNS VARCHAR(1000) BEGIN DECLARE pTemp VARCHAR(1000); DECLARE cTemp VARCHAR(1000); //两个临时变量 SET pTemp = '$'; SET cTemp =cast(rootId as CHAR); //把rootId强制转换为字符。 WHILE cTemp is not null DO SET pTemp = concat(pTemp,',',cTemp); //把所有节点连接成字符串。 SELECT group_concat(id) INTO cTemp FROM nodelist WHERE FIND_IN_SET(pid,cTemp)>0; // FIND_IN_SET(str,strlist)的方法网上大把不解释。 END WHILE; RETURN pTemp; END 执行方法getChildList(1): SELECT getChildList(1); 运行结果如下图:查询节点为“3”下的所有节点:SELECT * FROM nodelist WHERE FIND_IN_SET(id, getChildList(3)); 运行结果如下图:
meteorakira
中文名称:节点英文名称:node,panelpoint;pitchpoint;node定义1:塔的若干部件的汇合点。所属学科:电力(一级学科);输电线路(二级学科)定义2:在一对相啮合的齿轮上,其两节圆的切点。所属学科:机械工程(一级学科);传动(二级学科);齿轮传动(三级学科)定义3:在网络拓扑中,网络任何支路的终端或网络中两个或更多支路的互连公共点。所属学科:通信科技(一级学科);通信原理与基本技术(二级学科)★在装修构造中,那些以一种或多种材料组合并通过某种造型所形成的连接点,常称作节点。它是交待设计造型的重要环节,同时也是体现设计细部的重要因素。在图纸中常以局部剖面的形式体现,重点交待尺寸、构造、材质等具体细节。★在CorelDraw等软件中,线段的两端为节点,节点以小方块表示。★在网络中,任何计算机或其它设备(如打印机)。Internet上的任何计算机,一个主机(host)。每一个工作站﹑网络传真机﹑网络打印机﹑档案服务器﹑或任何其它拥有自己唯一网络地址的设备都是节点。它们是怎样获得网络地址的呢﹖从网络卡那里获得。每一张网络卡在出厂的时候都会被厂家分配一个地址﹐使用者是不可能变更此地址的。这样的地址安排就如我们日常的家庭地址一样﹐是用来区分各自的身份的。您的网络必须有能力去区别这一个地址有别于其它的地址。在网络里面﹐有很多资料封包会由一个节点传送到另一个节点﹐同时要确定封包会被正确的传达目的地﹐而这个目的地就必须依靠这个网络卡地址来认定了。节点是一个很抽象和应用很广泛的概念,通俗的说就是某个大环境中的一个点或者一段,好比公交车线路中的一个站台。[编辑本段]在程序语言中一、在XML语言中节点是XML文件中有效而完整的结构的最小单元。内含标示组的节点,加上必要属性、属性值及内容,便可构成一个元素。节点的标志符<>。例如:<Addresses><EntryType="Personal"><FirstName>Andy</FirstName><LastName>Fickle</LastName><Street>1234ProgrammerPlace</Street><City>Bugsville</City><State>CO</State><Zip>82379</Zip><PhoneType="Home"></Phone></Entry><EntryType="Work"><FirstName>Betty</FirstName><LastName>Masterson</LastName><PhoneType="Work"></Phone><PhoneType="WorkFax"></Phone></Entry>...</Addresses>在这里Addresses是根节点,Entry是Addresses的子节点,在XML中节点的名称是区分大小写的。如上面的
angelwhere?
节点的概念:maya中的节点是最小的单位。每个节点都是一个属性组。节点可以输入,输出,保存属性。 在使用maya进行三维制作时,所有操作都以各种几何形状,各种色彩的形式出现在品目上,但这些都不是真实存在的,而是由计算机虚拟出来的东西。在这些虚拟物品的背后起支持作用的是数学计算。在操作的过程中,软件系统将用户输入的指令,通过一系列计算转换成屏幕上可示的内容,但并不是所有的计算过程都是同时完成的。整个计算过程会分成一些小的单元,这些单元相互关联又相互独立,每个单元会完成一些计算步奏,形成一个相对独立的任务,然后将计算结果交给下一个计算单元进行进一步处理。节点就是这种计算单元。节点有输入属性和输出属性,能完成相对 独立的计算功能。节点的作用:虽然相当一部分人在maya中真正开始接触节点这个概念是在材质部分,但在maya中节点是无处不在的。建模,材质,灯光,动力学,动画等等,到处都有节点的影子。实际上拥护在maya中所做的每一步操作都是针对一个具体的节点。以模型为例,建立一个nerbs球体,场景中至少会产生三个节点;一个叫‘MakeNurbsSphere’,是它的创建节点,记录了它的创建初始参数;另一个叫‘NurbsSphere’是它的行为节点,这里记录了他的位移,旋转,缩放等空间位置关系;第三个叫‘NurbsSphereShape’这是他的形态节点。它记录了它的最后的形态。 对于一个模型师或动画师而言,不了解节点这个概念还是情有可原的。但是一个材质制作人员不知道节点是怎么回事是绝对不能原谅的!因为在maya中各种材质的变化完全依赖于节点网络的变化。如果对节点及节点网络没有一个清醒的认识就不可能将它运用好!难以表现这个千变万化的世界……
优质英语培训问答知识库