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

QQ登录

只需一步,快速开始

查看: 5838|回复: 17

[结贴] 自定义queryAction

[复制链接]

11

主题

75

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
发表于 2014-10-29 15:13:30 | 显示全部楼层 |阅读模式
版本: 小版本号:
数据库: 服务器操作系统: 应用服务器:
客户端操作系统: 浏览器:
我要把2个表的数据合并起来,看论坛的帖子,使用下面的代码,但是提示我的ksql语句错误,我找不出来错误地点。
        public static Table queryMZ_MZYPGL1(String concept,String select,String from,String aggregate,String dataModel,String fnModel,String condition,List range,Boolean distinct,String idColumn,String filter,Integer limit,Integer offset,String columns,String orderBy,String aggregateColumns,Map variables){
                //将UI传过来的过滤条件放入ksql
        String where = "";
        if(filter != null && !"".equals(filter)){
                where = " and " + filter;
        }
        //String sql = " from ER_WPXX ER_WPXX " + where;

        //计算出总记录数
        int cnt = 0;
        Table tCount = KSQL.select("select count(a.MD5) as cnt from (select M_mzddgl.fKHMC as fKHMC,M_ddfypc.D3 as D3,M_mzddgl.MD5 as MD5,M_ddfypc.D2 as D2,M_ddfypc.D5 as D5,M_ddfypc.D6 as D6,M_ddfypc.D12 as D12,M_ddfypc from M_ddfypc M_ddfypc optional join M_mzddgl M_mzddgl on M_ddfypc.D1 = M_mzddgl where M_ddfypc.D12 > :addDays( :currentDate() , 0 - 30) AND M_mzddgl is not null "+where+" union select '' as fKHMC,'' as D3,MZ_MZYPGL.Y1 as MD5,MZ_MZYPGL.Y5 as D2,1 as D5,2 as D6,MZ_MZYPGL.Y3 as D12,MZ_MZYPGL from MZ_MZYPGL MZ_MZYPGL where MZ_MZYPGL.Y4 <> '原煤仓' and MZ_MZYPGL.Y4 <> '精煤仓' and MZ_MZYPGL.Y3 > :addDays( :currentDate() , 0 - 5)"+where+") a group by a.MD5", variables, dataModel, null);
        Iterator<Row> it1 = tCount.iterator();
        if(it1.hasNext()){
            Row r = it1.next();
                cnt = r.getInt("cnt");
        }        

        //加上offset和limit实现分页
        Table table = KSQL.select("  select M_mzddgl.fKHMC as fKHMC,M_ddfypc.D3 as D3,M_mzddgl.MD5 as MD5,M_ddfypc.D2 as D2,M_ddfypc.D5 as D5,M_ddfypc.D6 as D6,M_ddfypc.D12 as D12,M_ddfypc from M_ddfypc M_ddfypc optional join M_mzddgl M_mzddgl on M_ddfypc.D1 = M_mzddgl where M_ddfypc.D12 > :addDays( :currentDate() , 0 - 30) AND M_mzddgl is not null "+where+" union select '' as fKHMC,'' as D3,MZ_MZYPGL.Y1 as MD5,MZ_MZYPGL.Y5 as D2,1 as D5,2 as D6,MZ_MZYPGL.Y3 as D12,MZ_MZYPGL from MZ_MZYPGL MZ_MZYPGL where MZ_MZYPGL.Y4 <> '原煤仓' and MZ_MZYPGL.Y4 <> '精煤仓' and MZ_MZYPGL.Y3 > :addDays( :currentDate() , 0 - 5)"+where+" order by D12 desc" + " limit "+Integer.toString(offset)+","+Integer.toString(limit), variables, dataModel, null);
        //不需要设置主键
        //table.getProperties().put(Table.PROP_NAME_ROWID, "ER_WPXX");
        //设置总记录数
        table.getProperties().put(Table.PROP_DB_COUNT, cnt);
        return table;
        }
}

38

主题

829

帖子

1656

积分

金牌会员

过客

Rank: 6Rank: 6

积分
1656
QQ
发表于 2014-10-29 15:19:57 | 显示全部楼层
出错的是什么.如果你要查询两张表的信息,可以直接调用Action(自定义),直接用SQL 语句就可以进行查询了(select a.*,b.* from 表 a  表 b where)Sql语句你可以在网上搜索就行.

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

11

主题

75

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2014-10-29 15:37:01 | 显示全部楼层
daniel007 发表于 2014-10-29 15:19
出错的是什么.如果你要查询两张表的信息,可以直接调用Action(自定义),直接用SQL 语句就可以进行查询了(sele ...

我是把2个结果合并到一起,不增加列,数据在行上增加
回复 支持 反对

使用道具 举报

11

主题

75

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2014-10-29 15:43:46 | 显示全部楼层
select M_mzddgl.fKHMC as fKHMC,M_ddfypc.D3 as D3,M_mzddgl.MD5 as MD5,M_ddfypc.D2 as D2,M_ddfypc.D5 as D5,M_ddfypc.D6 as D6,M_ddfypc.D12 as D12,M_ddfypc
    from M_ddfypc M_ddfypc optional
    join M_mzddgl M_mzddgl on M_ddfypc.D1 = M_mzddgl
    where M_ddfypc.D12 > :addDays( :currentDate() , 0 - 30) AND M_mzddgl is not null union select '' as fKHMC,'' as D3,MZ_MZYPGL.Y1 as MD5,MZ_MZYPGL.Y5 as D2,1 as D5,2 as D6,MZ_MZYPGL.Y3 as D12,MZ_MZYPGL from MZ_MZYPGL MZ_MZYPGL where MZ_MZYPGL.Y4 <> '原煤仓' and MZ_MZYPGL.Y4 <> '精煤仓' and MZ_MZYPGL.Y3 > :addDays( :currentDate() , 0 - 5)


这个执行正确,但是 count()就不行了
回复 支持 反对

使用道具 举报

11

主题

75

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2014-10-29 15:52:59 | 显示全部楼层
361874552 发表于 2014-10-29 15:37
我是把2个结果合并到一起,不增加列,数据在行上增加

select count(a.MD5) as cnt
    from (select M_mzddgl.fKHMC as fKHMC,M_ddfypc.D3 as D3,M_mzddgl.MD5 as MD5,M_ddfypc.D2 as D2,M_ddfypc.D5 as D5,M_ddfypc.D6 as D6,M_ddfypc.D12 as D12,M_ddfypc from M_ddfypc M_ddfypc optional
    join M_mzddgl M_mzddgl on M_ddfypc.D1 = M_mzddgl
    where M_ddfypc.D12 > :addDays( :currentDate() , 0 - 30) AND M_mzddgl is not null union select '' as fKHMC,'' as D3,MZ_MZYPGL.Y1 as MD5,MZ_MZYPGL.Y5 as D2,1 as D5,2 as D6,MZ_MZYPGL.Y3 as D12,MZ_MZYPGL from MZ_MZYPGL MZ_MZYPGL where MZ_MZYPGL.Y4 <> '原煤仓' and MZ_MZYPGL.Y4 <> '精煤仓' and MZ_MZYPGL.Y3 > :addDays( :currentDate() , 0 - 5)) a
    group by a.MD5

说是缺少右括号,不知道错在哪
回复 支持 反对

使用道具 举报

发表于 2014-10-29 16:04:08 | 显示全部楼层
使用countAll试下
回复 支持 反对

使用道具 举报

11

主题

75

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2014-10-29 16:09:34 | 显示全部楼层

不行
回复 支持 反对

使用道具 举报

11

主题

75

帖子

171

积分

初级会员

Rank: 2

积分
171
QQ
 楼主| 发表于 2014-10-29 16:15:21 | 显示全部楼层
重写queryaction,gird 怎么加载啊
回复 支持 反对

使用道具 举报

发表于 2014-10-29 16:24:06 | 显示全部楼层
使用这个com.justep.system.data.SQL代替KSQL呢
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35940
发表于 2014-10-29 17:07:51 | 显示全部楼层
361874552 发表于 2014-10-29 16:15
重写queryaction,gird 怎么加载啊

比较复杂的语句推荐用sql实现

重写了queryAction后,bizData的reader关联重写的这个action
grid绑定这个bizData就能显示出数据
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 03:58 , Processed in 0.096631 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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