Доброго!
Оценок у одной книги может быть несколько, жанров как я понял тоже, вот строки и задваиваются, чтобы увидеть это просто уберите группиворку и выполните запрос. Это поможет понять что происходит. А лучше уберите группировку и по очереди джойните таблицы анализируя результат, все станет понятно.
Если на пальцах объяснять то к каждому id книги будут прикреплены все оценки этой книги
book | rating
---------------
1 | 4
1 | 5
Если вы джойните еще одну таблицу то картина будет примерно такой
book | rating | gename
----------------------
1 | 4 | g1
1 | 4 | g2
1 | 5 | g1
1 | 5 | g2
Соответственно после группировок у вас:
book | rating | gename
----------------------
1 | 4.5 | g1, g2, g1, g2
А чтоб решить проблему используйте GROUP_CONCAT_DISTINCT
Он исключит повторяющиеся значения
book | rating | gename
----------------------
1 | 4.5 | g1, g2
p.s. В любой непонятной ситуации убирай группировку