起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1327|回复: 5

[结贴] KSQL的嵌套写法

[复制链接]

21

主题

63

帖子

250

积分

中级会员

Rank: 3Rank: 3

积分
250
QQ
发表于 2015-3-31 15:15:10 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
本帖最后由 si_my 于 2015-3-31 15:22 编辑

在X5提供的人力资源模块中的机构管理,新建保存的时候,有和X5系统的组织同步,目前是支持Oracle,我调成MySql,报错,帮忙看看!
   KSQL如下:
       String ksqlUpdateURL = "update HR_OG_Org a "
                        + "        set a.fFID = ( select currFID from (select concat(b.fFID,'/',a,'.',a.fOrgKindID) as currFID from HR_OG_Org b where b = a.fParent) tt ) "
                        +"        where a.fFID is null ";
        KSQL.executeUpdate(ksqlUpdateURL, null, hr_orgModel, null);

   控制台报错如下:
       Caused by: java.sql.SQLException: Unknown column 'HR_OG_Org.fID' in 'field list'
    补充:
    由于MySql数据库在Update时,子查询中不能包含自己,所以就又包了一层,包一层后,KSQL就不认识里面的字段了。


109

主题

1191

帖子

3851

积分

论坛元老

Rank: 8Rank: 8

积分
3851
QQ
发表于 2015-3-31 15:24:29 | 显示全部楼层
KSQL语句中必须给出概念的别名,可以与概念同名,如:SELECT SA_OPPerson.sName FROM SA_OPPerson SA_OPPerson

HR_OG_Org.fID中的fID是主键吗?
如果是主键 就写成概念的别名就行,查询某个概念的关系,必须写成 概念别名.关系名
回复 支持 反对

使用道具 举报

21

主题

63

帖子

250

积分

中级会员

Rank: 3Rank: 3

积分
250
QQ
 楼主| 发表于 2015-3-31 15:29:51 | 显示全部楼层
本帖最后由 si_my 于 2015-3-31 15:39 编辑

我的KSQL语句里,给了别名,为"a", fID是主键,所以在"concat(b.fFID,'/',a,'.',a.fOrgKindID) "里用的就是别名 a
或者告诉一种写法,比如组织,我想更新组织里的fFID字段,更新的时候想从关联自己取其父亲的信息。
String ksqlUpdateURL = "update HR_OG_Org a set a.fFID = (select concat(b.fFID,'/',a,'.',a.fOrgKindID)
   from HR_OG_Org b where b = a.fParent)  where a.fFID is null "


  现在这样写报错,报1093错误,在更新时,子查询不能包括自己。

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2015-3-31 16:30:13 | 显示全部楼层
1楼贴的是KSQL不是sql,KSQL是不管数据库的,无论换成什么数据库ksql不用去改变
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

21

主题

63

帖子

250

积分

中级会员

Rank: 3Rank: 3

积分
250
QQ
 楼主| 发表于 2015-3-31 17:27:57 | 显示全部楼层
String ksqlUpdateURL = "update HR_OG_Org a set a.fFID = (select concat(b.fFID,'/',a,'.',a.fOrgKindID)
   from HR_OG_Org b where b = a.fParent)  where a.fFID is null "

这是KSQL,X5提供的人力资源里的原代码,在Oracle里可以执行,在MySql数据库就1093报错。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2015-3-31 17:41:37 | 显示全部楼层
请到“BeX5应用产品”中发帖,这个是应用产品的问题,看看是不是处理过了
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-18 12:39 , Processed in 0.068527 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表