SQLite Concat e Join of Records
-
21-12-2019 - |
Domanda
Ho un problema con la corretta gestione della query DB nella mia app e ad essere onesti Non so cosa dovrei fare di più per farlo funzionare.
Il mio DB sembra questo
BooksTable
-_id
-title
-author
RentsBookTable
-_id
-userId
-bookId
-date
UsersTable
-_id
-name
GenresTable
-_id
-name
BooksGenresTable
-bookId
-genreId
.
Tutto dal mio DB voglio visualizzare all'interno di un ListView
.
Sto prendendo tutto con questa clausola:
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)
.
Voglio ogni riga Visualizzare il titolo del libro, il nome utente che lo ha affittato e i generi separati da virgola.
Tutto tranne l'ultima parte - concatenarsi e separazione con virgola dei generi che sto facendo ora correttamente con la clausola visualizzata.Ora i libri con più generi sono duplicati.Ho provato
"GROUP_CONCAT(" + GebresTable.name + ",', ') AS " + "genresConcat"
.
Purtroppo non sono in grado di raggiungere il mio obiettivo.Con questo concat ottengo sempre solo un record con tutti i generi concatenati e visualizzati.
Qualcuno può dirmi come posso raggiungere il mio obiettivo.
Soluzione
Prova con questo, per mostrare solo generi diversi:
GROUP_CONCAT(DISTINCT genre) AS genre
.
dovrai anche raggruppare il genere con GROUP BY
dopo la clausola WHERE per mostrare tutti i record che corrispondono.