| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 348 人关注过本帖
标题:引申:一对多关系的问题求助,子父表关系
取消只看楼主 加入收藏
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
结帖率:98.98%
收藏
已结贴  问题点数:5 回复次数:0 
引申:一对多关系的问题求助,子父表关系
昨天看了“一对多关系的问题求助”,其实就是子父表关系,N年之前,我学PHP写论坛的时候,用递归函数来处理,今天重温功课,不用递归,用查询语句,重点在ID3,好像是记录了父子链,通过这个链,来找到相关记录,ID2好像是没用了?其实还是有用的。缺点,好像是牺牲了空间,毕竟多了个ID3,长度还蛮不少的。欢迎大家讨论。多谢“吹水佬”提示用INLIST()函数。

CLEAR
CREATE CURSOR t1(id1 c(10),id2 c(10),name c(20),id3 c(110))
INSERT INTO t1(id1,id2,name,id3) values("A001","","冰箱","A001")
INSERT INTO t1(id1,id2,name,id3) values("A002","","电脑","A002")
INSERT INTO t1(id1,id2,name,id3) values("A003","A001","华楞冰箱","A001.A003")
INSERT INTO t1(id1,id2,name,id3) values("A004","A003","华楞冰箱压缩机","A001.A003.A004")
INSERT INTO t1(id1,id2,name,id3) values("A005","","手机","A005.")
INSERT INTO t1(id1,id2,name,id3) values("A006","A005","苹果手机","A005.A006")
INSERT INTO t1(id1,id2,name,id3) values("A007","A004","华楞冰箱压缩机电容","A001.A003.A004.A007")

*查所有记录
SELECT * FROM t1 ORDER BY id3

*查子记录,包括自己
id="A004"
SELECT * FROM t1 WHERE id3 like '%'+id+'%' ORDER BY id3

*查父记录,包括自己
id="A004"
SELECT ID3 FROM T1 WHERE ID1=ID INTO ARRAY AryId

*把ID3变为INLIST()函数列表参数格式,"A001.A003.A004" 变为 'A001','A003','A004'
FID=""
DO WHILE(AT(".",AryId)>0)
   FID=IIF(EMPTY(FID),"'"+SUBSTR(AryId,1,AT(".",AryId)-1)+"'",FID+","+"'"+SUBSTR(AryId,1,AT(".",AryId)-1)+"'")
   AryId=SUBSTR(AryId,AT(".",AryId)+1)
ENDDO
FID=IIF(EMPTY(fid),"'"+id+"'",fid+","+"'"+id+"'")

SELECT * FROM t1 WHERE INLIST(id1,&Fid) ORDER BY id3
2015-10-17 01:57
快速回复:引申:一对多关系的问题求助,子父表关系
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031694 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved