Le moyen le plus simple d'obtenir des données différentes uniquement dans les colonnes souhaitées consiste à utiliser GROUP BY
clause. Par défaut, il regroupera les lignes, en fonction de la valeur de la colonne, en n'affichant que des valeurs distinctes. Par conséquent, si vous souhaitez regrouper et afficher uniquement différents titres et catégories, vous devez écrire votre requête comme :
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
Comme vous pouvez le voir, aucun DISTINCT
est utilisé, mais vous obtiendrez tous les livres avec des titres et des catégories distincts. Plus vous ajoutez de champs dans le GROUP BY
clause, plus vous obtiendrez des données distinctes.
De la même manière, si vous ne vouliez lister les livres que par titre, vous ne devriez laisser que bk.title dans le GROUP BY
clause