Най-лесният начин да постигнете различни данни само в колоните, които искате, е да използвате GROUP BY
клауза. По подразбиране той ще групира редовете в зависимост от стойността на колоната, показвайки само различни стойности, така че ако искате да групирате и показвате само различни заглавия и категории, трябва да напишете заявката си като:
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
Както може да видите, няма DISTINCT
се използва, но ще получите всички книги с различни заглавия и категории. Колкото повече полета сте добавили в GROUP BY
клауза, толкова по-отчетливи данни ще получите.
По същия начин, ако искате да изброявате книги само по заглавие, трябва да оставите bk.title само в GROUP BY
клауза