Najłatwiejszym sposobem na uzyskanie różnych danych tylko w żądanych kolumnach jest użycie GROUP BY
klauzula. Domyślnie grupuje wiersze, w zależności od wartości kolumny, pokazując tylko różne wartości, więc jeśli chcesz pogrupować i pokazać tylko różne tytuły i kategorie, wpisz zapytanie jako:
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
Jak widać, nie ma DISTINCT
jest używany, ale otrzymasz wszystkie książki z odrębnymi tytułami i kategoriami. Im więcej pól dodanych do GROUP BY
klauzula, tym bardziej wyraźne dane uzyskasz.
W ten sam sposób, jeśli chcesz wyświetlić tylko książki według tytułu, powinieneś zostawić bk.title w GROUP BY
klauzula