Вопрос

У меня есть проблема с правильной обработкой запросов БД в моем приложении и, честно говоря, я не знаю, что я должен сделать больше, чтобы сделать его работать.

Моя БД выглядит так, как это выглядит

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, чтобы показать все записи, которые совпадают.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top