java - 坚持使用 SQLite 和 Group By 进行 android SQL 设计

标签 java android sql sqlite

存在以下问题: 尝试显示表格中的与会者列表。表 A 是通过将来自 Web 源(HTML 抓取)的数据“同步”到表 A 中生成的。

表A
列:事件 ID、用户 ID、用户名
数据:
1、111,哈利
2、222、本
3、534、海伦
2、534、海伦
2、545,詹姆斯

最终结果
我正在尝试将其显示在 Activity 中,如下所示:
社交 Activity 1:出席者:Harry
社交 2:参加者:Ben、Helen、James
社交 3:出席者:Helen

最好的方法是什么?

我的初步计划:
1) 在表 A 的 eventID 上使用分组依据运行 SQL 选择 (Query1)。
2) 循环遍历步骤 1 的每个结果。
3)对于查询1的每一个result结果,选择tableA中具有当前eventID的所有行(调用查询2)
4) 循环查询第 3 步查询 2 的结果,对于每个结果,将用户名添加到字符串缓冲区。在查询 2 结果的末尾,将 eventID 与生成的 StringBuffer 一起插入到新表中:

表 B:
列:事件 ID、用户名
数据:
1、《哈利》
2、《本、海伦、詹姆斯》
3、《海伦》

然后将表 B 中的数据与 SimpleCursorAdapter 一起使用,以使用数据填充标准 ListActivity,从而生成所有事件的列表和以逗号分隔的出席者列表。然后每次重新生成表A时,清除表B中的数据,并重新填充它。

问题:
这是做到这一点的最佳方式/最新方式吗?我真的不喜欢有一个临时表来做这件事的想法。

背景:我是 Android 开发的新手,自从几年前在大学学习 Java 后才重新开始学习。我在编程方面的强项在于 HTML、PHP、MySQL。

额外信息:为表 A 收集数据的方式是抓取一个页面,其中包含特定用户的所有事件。然后,我打算以相反的方式显示它,即为每个事件显示所有参加的用户。

我将不胜感激关于如何完成此任务的一些帮助/意见。非常感谢!

最佳答案

你不能试试下面这样的东西吗?

SELECT 
    eventID,
    userID, 
    GROUP_CONCAT(userName, ",") AS users
FROM table_a
GROUP BY eventID

因此您可以通过一次查询获取所有数据。

查看更多关于 GROUP_CONCAT 的信息.

关于java - 坚持使用 SQLite 和 Group By 进行 android SQL 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13178145/

相关文章:

java - 为什么我的程序忽略我的 if else 语句?

java - 找不到 Spring MVC Controller

java - for-each 循环;字符串不能转为int?

java - adRequest.addTestDevice() 参数要求让我感到困惑

sql - 使用 t-sql 导出 Excel 问题

sql - 在 select 子句中包含 nvarchar(max) 列会显着增加执行时间

java - 在日志中显示 Spring 事务

android - 错误 : cause android. compileSdkVersion 丢失

android - 安装错误 : INSTALL_FAILED_INSUFFICIENT_STORAGE

sql - 对子查询/表返回的每一行执行选择并组合(联合)结果