Nejjednodušší způsob, jak dosáhnout různých dat pouze ve sloupcích, které chcete, je pomocí GROUP BY
doložka. Ve výchozím nastavení seskupí řádky v závislosti na hodnotě sloupce a zobrazí pouze odlišné hodnoty, takže pokud chcete seskupit a zobrazit pouze různé názvy a kategorie, měli byste svůj dotaz napsat takto:
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 můžete vidět, žádné DISTINCT
se používá, ale získáte všechny knihy s odlišným názvem a kategoriemi. Čím více polí jste přidali do GROUP BY
klauzule, tím jasnější data získáte.
Stejným způsobem, pokud chcete vypisovat knihy pouze podle názvu, měli byste ponechat pouze bk.title v GROUP BY
doložka