У меня есть три таблицы, главы, уроки и вопросы, которые используются для отображения вопросов для курса. Структура таблицы приведена ниже для справки.
Таблица "public.chapters"
Column | Type | Modifiers
-----------+------------------------+---------------------------------------------------------------
id | integer | not null default nextval('chapters_chapter_id_seq'::regclass)
chapter | character varying(255) | not null
course_id | integer |
published | boolean | default false
Таблица "public.lessons"
Column | Type | Modifiers
------------+------------------------+-------------------------------------------------------------
id | integer | not null default nextval('lessons_lesson_id_seq'::regclass)
lesson | character varying(255) | not null
chapter_id | integer |
published | boolean | default false
Таблица "public.questions"
Column | Type | Modifiers
-----------+------------------------+-----------------------------------------------------------------
id | integer | not null default nextval('questions_question_id_seq'::regclass)
template | character varying(255) | not null
wording | character varying(255) | not null
lesson_id | integer | not null
Теперь мне нужно найти количество вопросов в главе. Итак, я использую следующий запрос.
select sum( num_of_questions ) as num_of_questions,
chapter_id
from ( select chapters.id as chapter_id,
lesson_id,
count(*) as num_of_questions
from questions
JOIN lessons ON lessons.id = questions.lesson_id
JOIN chapters ON lessons.chapter_id = chapters.id
GROUP BY lesson_id, chapters.id
ORDER BY lesson_id, chapters.id) as foo
group by chapter_id;
Как, можно ли преобразовать этот запрос для использования соединения вместо подзапроса.