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

QQ登录

只需一步,快速开始

查看: 2569|回复: 4

[结贴] 请求版主关于SQLITE中GROUP BY后结果的获得问题

[复制链接]

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
发表于 2016-2-29 23:01:40 | 显示全部楼层 |阅读模式
需要解决的问题: 对单位人员信息进行分类汇总(此处是按照职称,fwork)

程序实现:利用SQLITE中的GROUP BY功能实现职称(fwork)栏目的人数汇总。

出现问题:程序能够运行,没有报错,通过 改变 item(i)中i的值,   alert cnt, 似乎cnt的值也出现相应的数据,但是要求程序将分类结果(应该是2列,fwork 和 cnt)放到data2(包含ID和fwork 和 cnt,共3列)中再通过LIST1显示出来没有成功,不知道问题如何解决,自己感觉是将分类数据转换成表时出错,请求版主帮助,多谢!

               var self = this;
               var db = self.demoDB.getDatabase();
               
            
               event.async = true;
               
                       var data2=self.comp('statData');
               var append = event.options && event.options.append; // 是否数据追加模式
               SqliteUtil.executeSql(db, "SELECT fwork, COUNT(*) cnt FROM demo_test group by fwork", [], function(res) {
                          
                          
                           var table2 = SqliteUtil.rowsToTable(res.rows);
                          
                          
//                           var a= res.rows.item(0).cnt;
//                           alert(a);
                       

                          
               data2.loadData(table2, append);
                                // 异步执行模式下,加载数据后必须执行doRefreshAfter
                                data2.doRefreshAfter(true, event.options);
                                self.comp("list1").refresh(true);
                           });       
发表于 2016-3-1 10:32:54 | 显示全部楼层
本帖最后由 liangyongfei 于 2016-3-1 10:33 编辑

data加载数据后,你执行下data.count()  看看是否有数据呢??是多少??
self.comp("list1").refresh(true);  加上ture表示重现刷新data组件,如果 data数据已经存在了,请这样写就行self.comp("list1").refresh()
还有可以循环data组件,看看数据是否符合条件!只要data组件是存在数据的!显示就绝对没问题!list中使用val('字段名') 就可以
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-3-1 11:14:19 | 显示全部楼层
多谢指点!执行了data2.count() 后, alert出37,实际上应该是18类职称。另外,list1给出的是37个空行。不知怎么回事?我怀疑:
SqliteUtil.executeSql(db, "SELECT fwork, COUNT(*) cnt FROM demo_test group by fwork", [], function(res) { var table2 = SqliteUtil.rowsToTable(res.rows);........中
SqliteUtil.rowsToTable(res.rows) 没有把正确的数据获得,因为从原理上说group后的数据应该是只有fwork和cnt2列了。请指教。
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-3-1 11:23:10 | 显示全部楼层
在什么都没有动的情况下,我刚刚用dataTables1组件把数据显示出来了!37是正确的(因为数据库中有的人职称同时用了2种),现在还没有搞清楚为何用list不行(无法显示出data里的数据)?
回复 支持 反对

使用道具 举报

22

主题

142

帖子

316

积分

中级会员

Rank: 3Rank: 3

积分
316
QQ
 楼主| 发表于 2016-3-1 12:06:42 | 显示全部楼层
刚刚重新做了一个LIST,可以了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 05:51 , Processed in 0.069345 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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