Den nemmeste måde at opnå forskellige data kun i de kolonner, du ønsker, er at bruge GROUP BY
klausul. Som standard vil den gruppere rækkerne, afhængigt af værdien af kolonnen, og kun vise distinkte værdier, så hvis du vil gruppere og kun vise forskellige titler og kategorier, skal du skrive din forespørgsel som:
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
Som du måske kan se, ingen DISTINCT
bruges, men du får alle bøger med særskilte titel og kategorier. Jo flere felter du tilføjede til GROUP BY
klausul, jo mere adskilte data vil du få.
På samme måde, hvis du kun ønskede at liste bøger efter titel, bør du kun lade bk.title være i GROUP BY
klausul