MySQL SUM, INNER JOIN и GROUP BY в одном выражении.Ошибка синтаксиса - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно получить общий объем продаж каждого художника из этих четырех таблиц:

Artists (artist.id, artist.name)
Events (events.id, events.title, events.artist_id)
Sales (sales.events_id, sales.buyer_id, sales.amount)
Buyer (buyer.id, buyer.name)

Мне нужно следующее утверждение, объединяющее всего три таблицы:

SELECT sales.amount as SalesTotal, artists.title AS Artist
SUM (SalesTotal) 
FROM sales
INNER JOIN events ON events.id = sales.event_id
INNER JOIN artists ON artists.id = events.artist_id
GROUP BY Artist

НоЯ всегда получаю синтаксическую ошибку.Я прогуглил это, но все примеры, которые я получаю, находятся в той же самой таблице.Я не понимаю, где должна быть ошибка.Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Он вернет вам весь список исполнителей с общей продажей + нулевой исполнитель:

SELECT artists.title AS Artist, SUM(SalesTotal) as SalesTotal
FROM artists
LEFT JOIN events ON events.artist_id = artists.artist_id
LEFT JOIN sales ON sales.event_id = events.event_id
GROUP BY artists.id

Вывод:

Artist   SaleTotal
abc      2000
pqr      NULL
xyz      100
0 голосов
/ 15 февраля 2019

Я думаю, что вы хотите это:

SELECT 
     SUM(sales.amount) as SalesTotal, 
     artists.title AS Artist
FROM sales
INNER JOIN events ON events.id = sales.event_id
INNER JOIN artists ON artists.id = events.artist_id
GROUP BY artists.title;

Вы не можете использовать псевдонимы в выражении group by, потому что порядок вычисления или выполнения различных предложений в вашем выражении.Предложение group by выполняется перед применением определений псевдонимов в списке столбцов.

...