Foxtable(狐表)用户栏目专家坐堂 → sql查询表遭遇难题,部分限定条件无法查询到数据


  共有11844人关注过本帖树形打印复制链接

主题:sql查询表遭遇难题,部分限定条件无法查询到数据

帅哥哟,离线,有人找我吗?
teng0731
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:459 积分:3471 威望:0 精华:0 注册:2011/6/6 11:22:00
sql查询表遭遇难题,部分限定条件无法查询到数据  发帖心情 Post By:2011/7/12 22:26:00 [只看该作者]

sql查询表遭遇难题,部分限定条件无法查询到数据

同样一段sql代码,只是其中一个条件不一样,结果查询结果不一样:

图片点击可在新窗口打开查看
 
使用'T'作为条件,没有查询到结果
 
 
图片点击可在新窗口打开查看
 
更改一下条件
 
 
图片点击可在新窗口打开查看
 
结果就可以查询到数据:
 
 
图片点击可在新窗口打开查看
 
 
请狐爸看看是不是程序有问题。
补充,用pl/sql工具在oracle原数据库是可以查询到'T'的数据的。
[此贴子已经被作者于2011-7-12 22:26:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/7/12 22:54:00 [只看该作者]

添加附件后,要点击“上传附件”,否则看不到添加的东东。。。。。

 回到顶部
帅哥,在线噢!
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/13 7:58:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
teng0731
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:459 积分:3471 威望:0 精华:0 注册:2011/6/6 11:22:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:459 积分:3471 威望:0 精华:0 注册:2011/6/6 11:22:00
  发帖心情 Post By:2011/7/13 8:13:00 [只看该作者]

不好意思,没有考虑到你们看到的图会挂掉,我自己浏览可以,按照要求通过附件上传上了。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sql查询表遭遇难题.zip

 

--------大家不用费力了,我估计我找到原因了,等一下补充。

[此贴子已经被作者于2011-7-13 8:37:58编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/13 8:50:00 [只看该作者]

这是微软和甲骨文打架吧?

换甲骨文自家的数据访问组件看看:

 

http://www.oracle.com/technetwork/cn/database/windows/downloads/index-101312-zhs.html

 

 

或者你还是保留条件:

 

GCC.SEGMENT1 = 'T'

 

逐个删除其他条件看看。


 回到顶部
帅哥哟,离线,有人找我吗?
teng0731
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:459 积分:3471 威望:0 精华:0 注册:2011/6/6 11:22:00
  发帖心情 Post By:2011/7/13 9:02:00 [只看该作者]

呵呵,狐爸还真幽默,原因找到了,首先我要道歉,应用的sql语句出现问题,同样的查询我有两段语句,上面的语句居然有问题,而我平时用的语句固定到了程序中,找到正确的sql语句后,再重新测试通过,正确语句如下:

SELECT j1.description 公司名称,
       gcc.segment1 公司代码,
       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.FND_FLEX_VALUES_VL   J,
       apps.FND_FLEX_VALUES_VL   J1
 WHERE GCC.CODE_COMBINATION_ID = GB.CODE_COMBINATION_ID
   and gcc.segment3 = j.flex_value
   and gcc.segment1 = j1.flex_value
   and j.Flex_Value_Set_Id = '1007062'
   and j1.Flex_Value_Set_Id = '1007060'
   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'
   and gb.actual_flag = 'A'
    and GCC.SEGMENT1= 'T'
    and gb.period_name='JUN-11'
 order by 6

 

明天有时间,看看两段语句的差别,为什么会造成上面查询不到数据的错误。

[此贴子已经被作者于2011-7-13 9:06:32编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/13 9:27:00 [只看该作者]

呵呵,恭喜,其实我也稀里糊涂的。

 


 回到顶部