Я новичок в MySQL и SQL в целом, мне удалось заставить часть моего запроса работать как задумано, но я не уверен и не уверен, как точно превратить мой запрос в подзапрос для моих целей.
Контекст относительно базы данных: я помогаю разработать приложение для конференции в моем колледже, где они хотят, чтобы судьи могли оценивать постер, принадлежащий докладчику (-ям), и у докладчика может быть несколько постеров.Существует пять таблиц.
Judge
Poster
Presenter
Owns
Scores
Контекст относительно запроса: запрос ниже выводит имя докладчика и сумму значений этой конкретной записи из таблицы результатов
SELECT
presenter.presenter_name,
(visual + clarity + thoroughness
+ breadth + depth + quality
+ discussion + understanding + overall)
AS rec_tot
FROM scores
INNER JOIN judge ON judge.judge_id = scores.judge_ID
INNER JOIN poster ON poster.poster_ID = scores.poster_ID
INNER JOIN owns ON poster.poster_ID = owns.poster_ID
INNER JOIN presenter ON presenter.presenter_ID = owns.presenter_ID
ORDER BY presenter.academic_level, presenter.area_of_study,
presenter.category;
, которая будет выводитьследующее:
presenter_name | rec_tot
------------------------
nameOne | 17
nameTwo | 27
nameTwo | 18
nameTwo | 16
nameThree | 9
Я хочу взять этот запрос и вывести группу SUM (rec_tot) по Presenter_name, так что-то вроде:
presenter_name | rec_tot
------------------------
nameOne | 17
nameTwo | 61
nameThree | 9
Ниже приведена моя попытка решения проблемы:
SELECT a.*, SUM(rec_tot) AS total
FROM (SELECT (visual + clarity + thoroughness + breadth
+ depth + quality + discussion
+ understanding + overall) AS rec_tot
FROM scores
INNER JOIN judge ON judge.judge_id = scores.judge_ID
INNER JOIN poster ON poster.poster_ID = scores.poster_ID
INNER JOIN owns ON poster.poster_ID = owns.poster_ID
INNER JOIN presenter ON presenter.presenter_ID =
owns.presenter_ID
ORDER BY presenter.academic_level, presenter.area_of_study,
presenter.category
) AS a;
Однако, это просто дает мне сумму всех записей:
rec_tot | total
----------------
27 | 87
Но каждый раз, когда я пытаюсь ссылаться на таблицу, созданную в подзапросе, с докладчиком GROUP BY.presenter_name Я получаю «ОШИБКА: 1054. Неизвестный столбец« Presenter.presenter_ID »в« GROUP BY »».Поэтому я решил, что родительский запрос не может получить доступ к дочернему запросу, что заставляет меня попытаться использовать предложение FROM дочернего элемента в родительском запросе вместе, однако итоговое значение выводится как 435, что составляет 5x87 ... так чтосбивает с толку.
Кроме того, удаляя псевдоним 'a' Я получаю сообщение об ошибке 'ОШИБКА: 1284. Каждая производная таблица должна иметь свой собственный псевдоним'
Короче говоря, я очень смущенобъем псевдонимов, подзапросов и способы их правильной реализации.