所以,我要说我有三张表如下:
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制定查询,这样我就可以拥有一个包含以下数据的游标:
row1 =< foo,< quux,corge>>
row2 =< bar,< baz,corge>>
相反:
row1 =< foo,quux>
row2 =< foo,corge>
row3 =< bar,baz>
row4 =< bar,corge>
然而,我严重怀疑有什么东西可以准确地给我,所以我想我真正的问题是,制定这样的查询的最佳方法是什么,以便我可以将它传递给我的活动,它能够将所有这些数据返回给活动吗?或者我真的需要再次迭代我的光标以“拾取”所有额外的数据并自己重新组织。
答案 0 :(得分:2)
得到解决方案:
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)
here的SQLite文档。
无论如何,您也可以关注my problem on google group。