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

QQ登录

只需一步,快速开始

查看: 2246|回复: 7

[结贴] KSQL中in条件设置后报错

[复制链接]

10

主题

25

帖子

111

积分

初级会员

Rank: 2

积分
111
发表于 2014-1-17 09:41:18 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
本帖最后由 cyjinli 于 2014-1-17 09:43 编辑

Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150210; 提示: 执行KSQL出错, KSQL: SELECT SA_Task.*,SA_Task_1.sStatusID as sInstanceStatusID,SA_Task_1.sStatusName as sInstanceStatusName,SA_Task_1.sData2 as sInstanceData2,SA_Task_1.sData3 as sInstanceData3,SA_Task_1.sProcessName as sInstanceProcessName  FROM SA_Task SA_Task  optional  join SA_Task SA_Task_1 on SA_Task.sFlowID = SA_Task_1 WHERE (( SA_Task.sFlowID,SA_Task.sCreateTime)  in  (  (select SA_Task.sFlowID as sFlowID,(max( SA_Task.sCreateTime )) as custom1 from SA_Task SA_Task where ((SA_Task.sStatusID='tesReady') or (SA_Task.sStatusID='tesExecuting')) and (('/ORG01.ogn/PSN01@ORG01.psm' like concat(SA_Task.sExecutorFID, '%') or '/ORG01.ogn/2EEB5DF465E44B23B9DBB66E3D906C27.dpt/E4DB86CF3FA949689F8741316AA15454.pos/PSN01@E4DB86CF3FA949689F8741316AA15454.psm' like concat(SA_Task.sExecutorFID, '%') or '/ORG01.ogn/2EEB5DF465E44B23B9DBB66E3D906C27.dpt/42E3E049CB884F16990D5BB5B8C9E681.pos/PSN01@42E3E049CB884F16990D5BB5B8C9E681.psm' like concat(SA_Task.sExecutorFID, '%')) and (SA_Task.sExecutorFID like '/%')) group by SA_Task.sFlowID)) ) ORDER BY sCreateTime DESC LIMIT 0, 20; 可能的原因: 无
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.BizData.query(Unknown Source)
at TaskProcedure.taskEndQuery(TaskProcedure.java:156)
... 26 more
Caused by: com.justep.exception.KSQLException: 编码: JUSTEP154115; 提示: KSQL语法错误, SA_Task.sFlowID^^,SA_Task.sCreat中未找到需要的元素, 位置331期望是); 可能的原因: 无
at com.justep.exception.KSQLException.create(Unknown Source)
at com.justep.system.ksql.token.TokenManager.matchToken(Unknown Source)
at com.justep.system.ksql.token.TokenManager.match(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.unaryExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.multiExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.addExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.compExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.notExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.andExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.orExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.unaryExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.multiExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.addExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.compExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.notExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.andExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.orExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.conditionExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.whereExpression(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.selectSentenceNode(Unknown Source)
at com.justep.system.ksql.parser.QueryParser.start(Unknown Source)
at com.justep.system.ksql.parser.QueryParser.start(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.parse(Unknown Source)
... 31 more

PS:我将ksql转化成sql是可以正常执行的。

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-1-17 09:54:30 | 显示全部楼层
ksql中的问题是
WHERE (( SA_Task.sFlowID,SA_Task.sCreateTime)  in
两个关系一起 in
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

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

使用道具 举报

10

主题

25

帖子

111

积分

初级会员

Rank: 2

积分
111
 楼主| 发表于 2014-1-17 10:05:26 | 显示全部楼层
zhaixin 发表于 2014-1-17 09:54
ksql中的问题是
WHERE (( SA_Task.sFlowID,SA_Task.sCreateTime)  in
两个关系一起 in

这个查询的含义是某个流程实例中,最新的一条记录。的确是要两个同时匹配的。
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-1-17 10:20:13 | 显示全部楼层
10.png
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

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

使用道具 举报

10

主题

25

帖子

111

积分

初级会员

Rank: 2

积分
111
 楼主| 发表于 2014-1-17 10:33:13 | 显示全部楼层
zhaixin 发表于 2014-1-17 10:20

其实我想要的效果是:
SELECT COLUMN_NAME(S)
FROM TABLE_NAME
WHERE (COLUMN_NAME1,COLUMN_NAME2) IN.....

也就是说可能不支持这种语法。

我换了一种写法。报错如下所示:
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150210; 提示: 执行KSQL出错, KSQL: SELECT SA_Task.*,SA_Task_1.sStatusID as sInstanceStatusID,SA_Task_1.sStatusName as sInstanceStatusName,SA_Task_1.sData2 as sInstanceData2,SA_Task_1.sData3 as sInstanceData3,SA_Task_1.sProcessName as sInstanceProcessName  FROM SA_Task SA_Task  optional  join SA_Task SA_Task_1 on SA_Task.sFlowID = SA_Task_1 join (select SA_Task2.sFlowID as sFlowID,(max( SA_Task2.sCreateTime )) as sCreateTime from SA_Task SA_Task2 where ((SA_Task2.sStatusID='tesReady') or (SA_Task2.sStatusID='tesExecuting')) and (('/ORG01.ogn/PSN01@ORG01.psm' like concat(SA_Task2.sExecutorFID, '%') or '/ORG01.ogn/2EEB5DF465E44B23B9DBB66E3D906C27.dpt/E4DB86CF3FA949689F8741316AA15454.pos/PSN01@E4DB86CF3FA949689F8741316AA15454.psm' like concat(SA_Task2.sExecutorFID, '%') or '/ORG01.ogn/2EEB5DF465E44B23B9DBB66E3D906C27.dpt/42E3E049CB884F16990D5BB5B8C9E681.pos/PSN01@42E3E049CB884F16990D5BB5B8C9E681.psm' like concat(SA_Task2.sExecutorFID, '%')) and (SA_Task2.sExecutorFID like '/%')) group by SA_Task2.sFlowID) newTask  on SA_Task.sFlowID = newTask.sFlowID and SA_Task.sCreateTime = newTask.sCreateTime ORDER BY sCreateTime DESC LIMIT 0, 20; 可能的原因: 无
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.BizData.query(Unknown Source)
at TaskProcedure.taskEndQuery(TaskProcedure.java:161)
... 26 more
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP154053; 提示: KSQL语法错误, columns中的列sFlowID必须包含在select查出列中; 可能的原因: 无
at com.justep.exception.BusinessException.create(Unknown Source)
at com.justep.util.Utils.check(Utils.java:76)
at com.justep.system.ksql.parser.AbstractParser.handleColumns(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.selectSentenceNode(Unknown Source)
at com.justep.system.ksql.parser.QueryParser.start(Unknown Source)
at com.justep.system.ksql.parser.QueryParser.start(Unknown Source)
at com.justep.system.ksql.parser.AbstractParser.parse(Unknown Source)
... 31 more
回复 支持 反对

使用道具 举报

10

主题

25

帖子

111

积分

初级会员

Rank: 2

积分
111
 楼主| 发表于 2014-1-17 10:35:58 | 显示全部楼层
本帖最后由 cyjinli 于 2014-1-17 10:40 编辑
cyjinli 发表于 2014-1-17 10:33
其实我想要的效果是:
SELECT COLUMN_NAME(S)
FROM TABLE_NAME

在新的写法中, SA_Task.*  替换成具体的字段,就可以解决问题了。谢谢!
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-1-17 10:44:56 | 显示全部楼层
这个查询太复杂,不适合用ksql实现,用sql实现吧
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

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

使用道具 举报

10

主题

25

帖子

111

积分

初级会员

Rank: 2

积分
111
 楼主| 发表于 2014-1-17 10:49:16 | 显示全部楼层
zhaixin 发表于 2014-1-17 10:44
这个查询太复杂,不适合用ksql实现,用sql实现吧

这是在任务中心显示的,要求是已办和提交的记录仅显示最新的。SQL会简单一些。
谢谢!请结贴。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 22:47 , Processed in 0.079581 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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