SQLite获取使用3个表中的合成的对象列表

时间:2016-09-14 03:41:25

标签: java android mysql sqlite

我的sqlite数据库中有三个表。

Categories: category_id, title
Words: word_id, title, belongs_to(foreign key, category_id)
WordImgs: wordImg_id, title, belongs_to(foreign key, words_id)

我正在尝试实现一个方法List getAllCategories。每个类别都包含一个单词列表,每个单词包含一个单词图像列表。

我用它来加入表格,但因为有多个与单个值相关的值,我得到重复。

SELECT categories.title, words.title, wordings.title
FROM categories
JOIN words on categories.id = words.belongs_to
JOIN wordImgs words.id = WordImgs.belongs_to

实施例。该声明可以返回

Category,Word,wordImg
_______________    
Animal Dog Dog1
Animal Dog Dog2
Animal Cat Cat1

如何导航光标以便我只为列表中的每个不同类别和单词创建1个?

编辑:考虑使用三个嵌套游标。在网上看不到这么多,还有更好的选择吗?

2 个答案:

答案 0 :(得分:0)

尝试使用此查询

SELECT 
categories.title as categories_title, 
words.title as words_title, 
wordings.title as wordings_title
FROM categories
JOIN words ON categories.id=words.belongs_to
JOIN wordimgs ON words.id=WordImgs.belongs_to

在所有三个表中都有相同的列名,因此如果每个表都有别名,那就更好了。

如果需要从三个表中获取数据,请使用JOIN为您提供适当的数据

答案 1 :(得分:-2)

我建议您使用ORM库而不是自己编写查询。我在我的android项目中使用了SugarORM,看看这个链接http://satyan.github.io/sugar/index.html