Il modo più semplice per ottenere dati diversi solo nelle colonne desiderate è utilizzare GROUP BY
clausola. Per impostazione predefinita, raggrupperà le righe, a seconda del valore della colonna, mostrando solo valori distinti, quindi, se vuoi raggruppare e mostrare solo titoli e categorie diversi, dovresti scrivere la tua query come:
SELECT bk.title AS Title, bk.year AS Year, aut.authorname AS Author, cat.category AS Category
FROM book bk
JOIN book_category bk_cat
ON bk_cat.book_id = bk.bookid
JOIN categories cat
ON cat.id = bk_cat.category_id
JOIN books_authors bk_aut
ON bk_aut.book_id = bk.bookid
JOIN authors aut
ON aut.id = bk_aut.author_id
GROUP BY bk.title, cat.category
ORDER BY bk.title ASC
Come puoi vedere, nessun DISTINCT
viene utilizzato, ma otterrai tutti i libri con titoli e categorie distinti. Più campi hai aggiunto nel GROUP BY
clausola, più dati distinti otterresti.
Allo stesso modo, se desideri elencare solo i libri per titolo, dovresti lasciare bk.title solo nel GROUP BY
clausola