android - 单游标多对多查询不重复数据

标签 android sqlite cursor

所以,我要说我有如下三个表:

       POSTS             POSTS_TAGS           TAGS
+-----+-----------+ +---------+--------+ +-----+-------+
| _id |   title   | | post_id | tag_id | | _id | title | 
+-----+-----------+ +---------+--------+ +-----+-------+
|  0  |    foo    | |    0    |    1   | |  0  |  baz  |
+-----+-----------+ +---------+--------+ +-----+-------+
|  1  |    bar    | |    0    |    2   | |  1  | quux  |
+-----+-----------+ +---------+--------+ +-----+-------+
                    |    1    |    0   | |  2  | corge |
                    +---------+--------+ +-----+-------+
                    |    1    |    2   |
                    +---------+--------+

有什么方法可以用 SQLite 制定查询,这样我就可以拥有一个包含以下数据的游标:

行 1 = >
row2 = >

相对于:

行 1 =
row2 =
row3 =
row4 =

但是,我严重怀疑是否有任何东西可以准确地给我,所以我想我真正的问题是,制定这样的查询的最佳方式是什么,以便我可以将其传递回我的 Activity ,它能够将所有这些数据返回到 Activity 中吗?或者我真的需要在之后再次遍历我的光标以“拾取”所有额外数据并自己重新组织。

最佳答案

得到解决方案:

SELECT posts._id, posts.title, GROUP_CONCAT(tags._id) AS tags_id, GROUP_CONCAT(tags.tag_name) AS tags_name FROM posts 
LEFT OUTER JOIN posts_tags ON posts_tags.post_id=posts.post_id
LEFT OUTER JOIN tags ON posts_tags.tag_id=tags.tag_id
GROUP BY posts._id;

请根据您的问题调整查询:)

您可以找到有关 concat(x)concat(x,separator) 的 SQLite 文档 here .

反正你也可以关注my problem on google group .

关于android - 单游标多对多查询不重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245340/

相关文章:

混淆后的Android类规范名称唯一性

android - 与 android RIL 守护进程通信或拦截来自 RIL android 守护进程的消息

android - CNC 铣刀 Material 表示

android - sqlite 表中始终返回 null 值

javascript - 将光标外观更改为字母

显示初始化错误的 Java-MP3 文件

java - SQLite Android 运行时错误

cocoa-touch - URL 未插入 SQLite3 数据库中

swift - UITextField 离开光标,移除键盘

ios - 如何使用 ios-charts 创建游标