#sql
#sql
Вопрос:
Здравствуйте, я пишу sql-запрос, но я получаю синтаксическую ошибку в строке с GROUP BY. В чем может быть проблема.
SELECT au_lname, au_fname, t.title_id
from authors As a INNER JOIN
titleauthor As ta On a.au_id = ta.au_id INNER JOIN
titles As t On t.title_id = ta.title_id
ORDER BY au_lname, au_fname
GROUP BY au_lname
Комментарии:
1. Нет особого смысла применять GROUP BY, если вы также не используете агрегатную функцию. Что вы пытаетесь сделать?
2. Избавьтесь от повторяющихся результатов в результирующей таблице
3. это лучше сделать с помощью DISTINCT
Ответ №1:
Поместите GROUP BY перед ORDER BY. Кроме того, все поля, включенные в select, должны либо находиться в инструкции GROUP BY, либо находиться внутри агрегатной функции.
Попробуйте это:
SELECT au_lname, au_fname, t.title_id
from authors As a INNER JOIN
titleauthor As ta On a.au_id = ta.au_id INNER JOIN
titles As t On t.title_id = ta.title_id
GROUP BY au_lname, au_fname, t.title_id
ORDER BY au_lname, au_fname
Если вы просто хотите избавиться от повторяющихся результатов, вы также можете использовать ключевое слово DISTINCT:
SELECT DISTINCT au_lname, au_fname, t.title_id
from authors As a INNER JOIN
titleauthor As ta On a.au_id = ta.au_id INNER JOIN
titles As t On t.title_id = ta.title_id
ORDER BY au_lname, au_fname
Ответ №2:
Общий синтаксис для инструкции select является
SELECT select_list
[INTO new_table_]
FROM table_source
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC] ;
итак, в вашем случае
SELECT au_lname, au_fname, t.title_id
from authors As a INNER JOIN
titleauthor As ta On a.au_id = ta.au_id INNER JOIN
titles As t On t.title_id = ta.title_id
GROUP BY au_lname
ORDER BY au_lname, au_fname
Комментарии:
1. Это не сработает. Выберите поля au_fname и t.title_id должен быть либо помещен в группу by, либо агрегирован с помощью агрегатной функции.