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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top