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;