SQLite Concat和记录的JOIN

时间:2014-06-03 15:51:25

标签: android sqlite android-sqlite

我的应用中存在正确的数据库查询处理问题,说实话,我不知道应该做些什么来使其工作。

我的数据库看起来像这样

BooksTable
-_id
-title
-author

RentsBookTable
-_id
-userId
-bookId
-date

UsersTable
-_id
-name

GenresTable
-_id
-name

BooksGenresTable
-bookId
-genreId

我的数据库中的所有内容我想在ListView内显示。

我正在接受这个条款:

BooksTable 
LEFT OUTER JOIN RentsBookTable ON(RentsBookTable.bookId=BooksTable._id)   
LEFT OUTER JOIN UsersTable ON(RentsBookTable._id=UsersTable._id) 
LEFT OUTER JOIN BooksGenresTable ON(BooksGenreTable.bookId=BooksTable._id) 
LEFT OUTER JOIN GenresTable ON(GenresTable._id=BooksGenresTable.genreId)

我希望每一行都显示图书的标题,租用它的用户名以及用逗号分隔的类型。

除了最后一部分之外的所有内容 - 使用显示的子句正确地使用类型的逗号连接和分隔。现在有更多类型的书籍是重复的。我一直在尝试

"GROUP_CONCAT(" + GebresTable.name + ",', ') AS " + "genresConcat"

不幸的是我无法实现目标。通过这个concat,我总是只获得一个连接和显示所有类型的记录。

有人可以告诉我如何实现目标。

1 个答案:

答案 0 :(得分:1)

尝试使用此功能,仅显示不同的类型:

GROUP_CONCAT(DISTINCT genre) AS genre

您还需要在where子句后面用GROUP BY对类型进行分组,以显示所有匹配的记录。