所以,我要说我有如下三个表:
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/