SQLite Concat и соединение записей
-
21-12-2019 - |
Вопрос
У меня есть проблема с правильной обработкой запросов БД в моем приложении и, честно говоря, я не знаю, что я должен сделать больше, чтобы сделать его работать.
Моя БД выглядит так, как это выглядит
BooksTable
-_id
-title
-author
RentsBookTable
-_id
-userId
-bookId
-date
UsersTable
-_id
-name
GenresTable
-_id
-name
BooksGenresTable
-bookId
-genreId
.
Все из моей БД, я хочу отображать внутри генеракодицетагкода.
Я беру все это предложение:
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 я всегда получаю только одну запись со всеми генрами, объединенными и отображаемыми.
может кто-то, пожалуйста, скажите мне, как я могу достичь своей цели.
Решение
Попробуйте это, чтобы показать только жанры, которые отличаются:
GROUP_CONCAT(DISTINCT genre) AS genre
.
Вам также нужно будет группировать жанр GROUP BY
после того, как предложение WHERE, чтобы показать все записи, которые совпадают.