以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- sql查询表遭遇难题,部分限定条件无法查询到数据 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11197) |
||||
-- 作者:teng0731 -- 发布时间:2011/7/12 22:26:00 -- sql查询表遭遇难题,部分限定条件无法查询到数据 sql查询表遭遇难题,部分限定条件无法查询到数据, 同样一段sql代码,只是其中一个条件不一样,结果查询结果不一样: 使用\'T\'作为条件,没有查询到结果
更改一下条件
结果就可以查询到数据:
请狐爸看看是不是程序有问题。
补充,用pl/sql工具在oracle原数据库是可以查询到\'T\'的数据的。 [此贴子已经被作者于2011-7-12 22:26:59编辑过]
|
||||
-- 作者:mr725 -- 发布时间:2011/7/12 22:54:00 -- 添加附件后,要点击“上传附件”,否则看不到添加的东东。。。。。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/7/13 7:58:00 -- 楼主看下这个:
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=78&replyID=&skin=1
|
||||
-- 作者:teng0731 -- 发布时间:2011/7/13 8:01:00 -- 补充说明,上面的问题由于是通过外部数据库ORACEL查询数据,就算是我将项目打包放到附件,也无法进行验证运行(链接不到外部数据库),所以我采取描述问题的方式: 通过进一步测试,如果是将sql语句精简,只针对有“T”的表进行查询,通过sql查询窗口,可以得到结果数据,如下,
可以查询到结果
上面查询用的完整语句是:
SELECT gcc.*
FROM {APPS.gl_code_combinations } gcc WHERE GCC.SEGMENT1 = \'T\' and GCC.SEGMENT2 = \'T\' and GCC.SEGMENT4 = \'T\' and GCC.SEGMENT3 not in (1000, 2000, 5100, 5101, 5400, 5401,3000) and GCC.SEGMENT5 = \'T\' and GCC.SEGMENT6 = \'T\' and GCC.SEGMENT7 = \'T\' 查询不到结果的语句是:
SELECT hao.name 公司名称,
hao.internal_address_line 公司代码, gb.period_name 期间名称, GCC.SEGMENT3 || \' \' || j.description 科目, j.description 科目名称, GCC.SEGMENT3 科目代码, decode(j.structured_hierarchy_level, 8, \'一级科目\',5,\'二级科目\', 6,\'三级科目\', \'四级科目\') 科目级次, gb.begin_balance_dr - gb.begin_balance_cr 期初数, gb.period_net_dr 本期借方发生额, gb.period_net_cr 本期贷方发生额, gb.period_net_dr - gb.period_net_cr 本期净额, gb.begin_balance_dr - gb.begin_balance_cr +gb.period_net_dr-gb.period_net_cr 期末数 FROM {APPS.gl_balances} gb,{APPS.gl_code_combinations} gcc,{APPS.hr_all_organization_units} hao,{APPS.FND_FLEX_VALUES_VL} J WHERE GCC.CODE_COMBINATION_ID = GB.CODE_COMBINATION_ID and gcc.segment3 = j.flex_value and j.Flex_Value_Set_Id = \'1007062\' AND GCC.SEGMENT1 = \'T\' and GCC.SEGMENT2 = \'T\' and gcc.segment1 = hao.internal_address_line and hao.name like \'OU%\' and GCC.SEGMENT4 = \'T\' and GCC.SEGMENT3 not in (1000, 2000, 5100, 5101, 5400, 5401,3000) and GCC.SEGMENT5 = \'T\' and GCC.SEGMENT6 = \'T\' and GCC.SEGMENT7 = \'T\' and gb.actual_flag = \'A\' and gb.period_name = \'JUN-11\' ORDER BY 2,6 如果将上面查询不到结果的语句换成:
SELECT hao.name 公司名称,
hao.internal_address_line 公司代码, gb.period_name 期间名称, GCC.SEGMENT3 || \' \' || j.description 科目, j.description 科目名称, GCC.SEGMENT3 科目代码, decode(j.structured_hierarchy_level, 8, \'一级科目\',5,\'二级科目\', 6,\'三级科目\', \'四级科目\') 科目级次, gb.begin_balance_dr - gb.begin_balance_cr 期初数, gb.period_net_dr 本期借方发生额, gb.period_net_cr 本期贷方发生额, gb.period_net_dr - gb.period_net_cr 本期净额, gb.begin_balance_dr - gb.begin_balance_cr +gb.period_net_dr-gb.period_net_cr 期末数 FROM {APPS.gl_balances} gb,{APPS.gl_code_combinations} gcc,{APPS.hr_all_organization_units} hao,{APPS.FND_FLEX_VALUES_VL} J WHERE GCC.CODE_COMBINATION_ID = GB.CODE_COMBINATION_ID and gcc.segment3 = j.flex_value and j.Flex_Value_Set_Id = \'1007062\' AND GCC.SEGMENT1 = \'3610\' and GCC.SEGMENT2 = \'T\' and gcc.segment1 = hao.internal_address_line and hao.name like \'OU%\' and GCC.SEGMENT4 = \'T\' and GCC.SEGMENT3 not in (1000, 2000, 5100, 5101, 5400, 5401,3000) and GCC.SEGMENT5 = \'T\' and GCC.SEGMENT6 = \'T\' and GCC.SEGMENT7 = \'T\' and gb.actual_flag = \'A\' and gb.period_name = \'JUN-11\' ORDER BY 2,6 又可以查询到想要的结果,真的不知道具体的原因。
上面两段语句如果通过pl/sql查询,都可以查询到想要的结果。 |
||||
-- 作者:teng0731 -- 发布时间:2011/7/13 8:13:00 -- 不好意思,没有考虑到你们看到的图会挂掉,我自己浏览可以,按照要求通过附件上传上了。
--------大家不用费力了,我估计我找到原因了,等一下补充。 [此贴子已经被作者于2011-7-13 8:37:58编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/7/13 8:50:00 -- 这是微软和甲骨文打架吧? 换甲骨文自家的数据访问组件看看:
http://www.oracle.com/technetwork/cn/database/windows/downloads/index-101312-zhs.html
或者你还是保留条件:
GCC.SEGMENT1 = \'T\'
逐个删除其他条件看看。 |
||||
-- 作者:teng0731 -- 发布时间:2011/7/13 9:02:00 -- 呵呵,狐爸还真幽默,原因找到了,首先我要道歉,应用的sql语句出现问题,同样的查询我有两段语句,上面的语句居然有问题,而我平时用的语句固定到了程序中,找到正确的sql语句后,再重新测试通过,正确语句如下: SELECT j1.description 公司名称,
明天有时间,看看两段语句的差别,为什么会造成上面查询不到数据的错误。 [此贴子已经被作者于2011-7-13 9:06:32编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/7/13 9:27:00 -- 呵呵,恭喜,其实我也稀里糊涂的。
|