以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]SQL语句求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186106)

--  作者:ajie5211
--  发布时间:2023/4/6 15:42:00
--  [求助]SQL语句求助
数据库中有三个表
 SEL ECT TOP (1000) FID,[FENTRYID],[FNUMBER] FR OM T_BAS_FLEXVALUESENTRY wh ere FENTRYID = 110242
sele ct FID,FFLEXNUMBER fr om t_bas_flexvalues
sele ct * fro m t_bas_flexvaluesdetail wh ere FID = 102455

图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_20230406153549.png
图片点击可在新窗口打开查看
t_bas_flexvaluesdetail的列由t_bas_flexvalues控制动态增加,现知道t_bas_flexvaluesdetail列FID的值102455,希望得到表T_BAS_FLEXVALUESENTRY中FNUMBER的值,
能不能整一个查询表,或是存储过程来实现?


--  作者:有点蓝
--  发布时间:2023/4/6 15:53:00
--  
没看懂这3个表数据是怎么关联的
--  作者:ajie5211
--  发布时间:2023/4/6 16:05:00
--  
t_bas_flexvaluesdetail的列FF100040,是表t_bas_flexvalues中FID为100040,FFLEXNUMBER列FF100040这一行控制的,
t_bas_flexvaluesdetail列FID = 102455时,列FF100040 = 110242
对应的T_BAS_FLEXVALUESENTRY 中列FID = 100040,FENTRYID = 110242,此时可求出FNUMBER = ‘02000’

比较麻烦的是,t_bas_flexvaluesdetail中我们用FID的值去查询时,有可能是列FF100040有值,也有可能是列FF100041有值,具体是哪一列有值,是表T_BAS_FLEXVALUESENTRY的FID对应t_bas_flexvalues的FID所对行FFLEXNUMBER中的列名。

--  作者:有点蓝
--  发布时间:2023/4/6 16:32:00
--  
这个没有办法使用sql处理,加载数据后使用代码遍历处理
--  作者:ajie5211
--  发布时间:2023/4/6 16:35:00
--  
用存储过程也不行么?
--  作者:有点蓝
--  发布时间:2023/4/6 16:39:00
--  
应该可以,但是更麻烦,使用存储过程也一样要遍历逐行处理,并且要动态拼接sql来执行,效率不会比使用代码高
--  作者:ajie5211
--  发布时间:2023/4/7 13:12:00
--  
存储过程的完整写法见附件
以下内容只有回复后才可以浏览

[此贴子已经被作者于2023/4/7 13:12:37编辑过]

--  作者:thz706
--  发布时间:2023/4/7 13:31:00
--  
学习下
--  作者:yuchunlnog
--  发布时间:2023/4/7 14:00:00
--  
看一眼
--  作者:gweeo
--  发布时间:2023/4/7 15:59:00
--  
支持