Der einfachste Weg, unterschiedliche Daten nur in den gewünschten Spalten zu erhalten, ist die Verwendung von GROUP BY
Klausel. Standardmäßig werden die Zeilen abhängig vom Wert der Spalte gruppiert und nur unterschiedliche Werte angezeigt. Wenn Sie also gruppieren und nur unterschiedliche Titel und Kategorien anzeigen möchten, sollten Sie Ihre Abfrage wie folgt schreiben:
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
Wie Sie vielleicht sehen, kein DISTINCT
verwendet wird, aber Sie erhalten alle Bücher mit unterschiedlichen Titeln und Kategorien. Je mehr Felder Sie in GROUP BY
hinzugefügt haben -Klausel, desto eindeutigere Daten erhalten Sie.
Wenn Sie Bücher nur nach Titel auflisten möchten, sollten Sie auf die gleiche Weise nur bk.title in GROUP BY
belassen Klausel