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

QQ登录

只需一步,快速开始

查看: 1932|回复: 7

[结贴] KSQL执行报错,SQL执行不报错

[复制链接]

51

主题

268

帖子

496

积分

中级会员

Rank: 3Rank: 3

积分
496
QQ
发表于 2014-5-1 23:18:15 | 显示全部楼层 |阅读模式
SELECT b.fCompanyID,a.fCompanyID FROM BA_StorageImdtAcct b JOIN (SELECT CL_PurchaseInStorageHd.yDocCode,CL_PurchaseInStorageHd.yDocDate,CL_PurchaseInStorageHd.fCompanyID,CL_PurchaseInStorageHd.fStID,CL_PurchaseInStorageItem.yRowID,CL_PurchaseInStorageItem.fMatID,CL_PurchaseInStorageItem.yBatchCode,CL_PurchaseInStorageItem.fDigit FROM CL_PurchaseInStorageItem CL_PurchaseInStorageItem JOIN CL_PurchaseInStorageHd CL_PurchaseInStorageHd ON CL_PurchaseInStorageItem.yID = CL_PurchaseInStorageHd.yID WHERE CL_PurchaseInStorageItem.yID = '7990A3F012CF4106992818A8CACAA12E') a  ON b.yBatchCode = a.yBatchCode AND b.fStID = a.fStID AND b.fCompanyID = a.fCompanyID AND b.fMatID = a.fMatID

将后台执行的KSQL,复制到数据库执行是不会报错的,此外后台打印报错说缺失字段,但实际也是有的。

如果将SELECT b.fCompanyID,a.fCompanyID 改成SELECT b.*,执行则不会报错。

后台打印:
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:595)
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150210; 提示: 执行KSQL出错, KSQL: SELECT b.fCompanyID,a.fCompanyID FROM BA_StorageImdtAcct b JOIN (SELECT CL_PurchaseInStorageHd.yDocCode,CL_PurchaseInStorageHd.yDocDate,CL_PurchaseInStorageHd.fCompanyID,CL_PurchaseInStorageHd.fStID,CL_PurchaseInStorageItem.yRowID,CL_PurchaseInStorageItem.fMatID,CL_PurchaseInStorageItem.yBatchCode,CL_PurchaseInStorageItem.fDigit FROM CL_PurchaseInStorageItem CL_PurchaseInStorageItem JOIN CL_PurchaseInStorageHd CL_PurchaseInStorageHd ON CL_PurchaseInStorageItem.yID = CL_PurchaseInStorageHd.yID WHERE CL_PurchaseInStorageItem.yID = '7990A3F012CF4106992818A8CACAA12E') a  ON b.yBatchCode = a.yBatchCode AND b.fStID = a.fStID AND b.fCompanyID = a.fCompanyID AND b.fMatID = a.fMatID LIMIT 0, 50
        at com.justep.exception.BusinessException.create(Unknown Source)
        at com.justep.system.data.impl.TableUtilsImplement.ksqlSelect(Unknown Source)
        at com.justep.system.data.impl.TableUtilsImplement.ksqlSelect(Unknown Source)
        at com.justep.system.data.impl.TableUtilsImplement.ksqlSelect(Unknown Source)
        at com.justep.system.data.KSQL.select(Unknown Source)
        at KSQLProcedure.query(KSQLProcedure.java:17)
        ... 26 more
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150039; 提示: 执行sql: (SELECT  b.FCOMPANYID AS fCompanyID, a.fCompanyID AS a_fCompanyID FROM BA_STORAGEIMDTACCT b JOIN (SELECT  CL_PurchaseInStorageHd.YDOCCODE AS yDocCode, CL_PurchaseInStorageHd.YDOCDATE AS yDocDate, CL_PurchaseInStorageHd.FCOMPANYID AS CL_PurchaseInStorageHd_fCompanyID, CL_PurchaseInStorageHd.FSTID AS fStID, CL_PurchaseInStorageItem.YROWID AS yRowID, CL_PurchaseInStorageItem.FMATID AS fMatID, CL_PurchaseInStorageItem.YBATCHCODE AS yBatchCode, CL_PurchaseInStorageItem.FDIGIT AS fDigit FROM CL_PURCHASEINSTORAGEITEM CL_PurchaseInStorageItem JOIN CL_PURCHASEINSTORAGEHD CL_PurchaseInStorageHd ON CL_PurchaseInStorageItem.YID = CL_PurchaseInStorageHd.YID  WHERE CL_PurchaseInStorageItem.YID = ?) a ON  (b.YBATCHCODE = a.yBatchCode) AND (b.FSTID = a.fStID) AND (b.FCOMPANYID = a.fCompanyID) AND (b.FMATID = a.fMatID) ), binds: [7990A3F012CF4106992818A8CACAA12E]出错
        at com.justep.exception.BusinessException.create(Unknown Source)
        at com.justep.system.ksql.KSQLUtils.execSqlSelect(Unknown Source)
        ... 31 more
Caused by: java.sql.SQLException: Unknown column 'a.fCompanyID' in 'field list'
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:2994)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:936)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1030)
        at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        ... 32 more

310

主题

4938

帖子

4767

积分

论坛元老

Rank: 8Rank: 8

积分
4767
QQ
发表于 2014-5-2 07:35:19 | 显示全部楼层
换成大写试试,a.FCOMPANYID
QQ:179785966
回复 支持 反对

使用道具 举报

45

主题

4492

帖子

3960

积分

论坛元老

Rank: 8Rank: 8

积分
3960
QQ
发表于 2014-5-2 09:01:21 | 显示全部楼层
你的SQL与KSQL不一样的,
SQL  写的是  SELECT  b.FCOMPANYID AS fCompanyID, a.fCompanyID AS a_fCompanyID
KSQL写的是  SELECT  b.fCompanyID,a.fCompanyID

1、在KSQL中概念名与关系名是区分大小写的;
2、将你的KSQL中的 select  的字段重名了,你重命名一下,如 b.FCOMPANYID AS fCompanyID, a.fCompanyID AS a_fCompanyID   然后再试试。

评分

参与人数 1 +5 收起 理由
jishuang + 5 赞一个!

查看全部评分

向前进,向前进,我们……
回复 支持 反对

使用道具 举报

51

主题

268

帖子

496

积分

中级会员

Rank: 3Rank: 3

积分
496
QQ
 楼主| 发表于 2014-5-2 10:13:52 | 显示全部楼层
是啊,竟然采用自动改名的方式。我换种方式吧。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2014-5-4 08:58:57 | 显示全部楼层
xuni2 发表于 2014-5-2 10:13
是啊,竟然采用自动改名的方式。我换种方式吧。

KSQL中如果两个表的关系名一样,需要自己设置一个不一样的别名,否则生成的别名是一样的,就不知道找那个了
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

51

主题

268

帖子

496

积分

中级会员

Rank: 3Rank: 3

积分
496
QQ
 楼主| 发表于 2014-5-4 10:15:59 | 显示全部楼层
jishuang 发表于 2014-5-4 08:58
KSQL中如果两个表的关系名一样,需要自己设置一个不一样的别名,否则生成的别名是一样的,就不知道找那个 ...

如果都是在同一个SELECT出来的字段,重名了,自动命名。这个可以理解吧。但是没想到嵌套的语句重名了也会重命名。比如select companyid from (select xxx.companyid from xxx..)..这种情况下,companyid也会找不到。看来整个环境下,select有重名的,都会自动改名为概念名_关系标识,后知后觉啊。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2014-5-4 10:48:02 | 显示全部楼层
xuni2 发表于 2014-5-4 10:15
如果都是在同一个SELECT出来的字段,重名了,自动命名。这个可以理解吧。但是没想到嵌套的语句重名了也会 ...

子查询中也不能有名称一样的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

51

主题

268

帖子

496

积分

中级会员

Rank: 3Rank: 3

积分
496
QQ
 楼主| 发表于 2014-5-4 10:54:28 | 显示全部楼层
jishuang 发表于 2014-5-4 10:48
子查询中也不能有名称一样的

好的,这样有点麻烦,可结贴。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 14:30 , Processed in 0.062886 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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