MySQL Error 1064

Я новичок в SQL. Пытаюсь составить несложный запрос и получаю ошибку:

ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'q2 order by title' at line 1

В гугле нашел, что это связано с неправильным использованием кавычек, но у меня их вообще нету и не знаю должны ли быть. И вообще в разных местах причина такой ошибки указывается разная. Прошу помощи. Вот запрос:

SELECT title, name_author, name_genre, price, amount FROM book 
INNER JOIN author ON book.author_id = author.author_id 
INNER JOIN genre ON book.genre_id = genre.genre_id 
WHERE book.genre_id IN (SELECT q1.genre_id, MAX(q1.sum_amount)
FROM (SELECT genre_id, SUM(amount) AS sum_amount 
FROM book GROUP BY genre_id)q1 GROUP BY genre_id)q2 ORDER BY title;

Поскольку это вроде как синтаксическая ошибка надеюсь, что схема таблиц не нужна. Спасибо.


Ответы (1 шт):

Автор решения: FoxyHopper Dev

Ваш запрос выглядит неполным, и, возможно, вам нужно использовать подзапрос q2 с оператором JOIN для объединения результатов. Кроме того, в MySQL нельзя использовать MAX в SELECT в сочетании с другими столбцами без использования GROUP BY.

Попробуйте следующий запрос:

SELECT title, name_author, name_genre, price, amount
FROM book
INNER JOIN author ON book.author_id = author.author_id
INNER JOIN genre ON book.genre_id = genre.genre_id
INNER JOIN (
    SELECT q1.genre_id, MAX(q1.sum_amount) AS max_amount
    FROM (
        SELECT genre_id, SUM(amount) AS sum_amount 
        FROM book 
        GROUP BY genre_id
    ) q1
    GROUP BY q1.genre_id
) q2 ON book.genre_id = q2.genre_id AND book.amount = q2.max_amount
ORDER BY title;
→ Ссылка