Получение «группы по» имени / псевдониму столбца параметра из другой таблицы

#sql #postgresql

#sql #postgresql

Вопрос:

У меня есть таблица podcast . У каждого подкаста есть категория и подкатегория, связанные с ним в виде идентификаторов.

введите описание изображения здесь

Эти category_id и subcategory_id имеют свои значения имен в соответствующих таблицах —

введите описание изображения здесь
введите описание изображения здесь

Теперь я хочу получить количество подкастов по каждой категории, комбинации подкатегорий —

 SELECT podcast_category_id, podcast_subcategory_id, count(*)
FROM podcasts
where podcast_owner = 14 AND podcast_upload_time_stamp >= timestamp '2020-10-22 00:00:00'
GROUP BY podcast_category_id, podcast_subcategory_id
  

Вывод —

введите описание изображения здесь

Выходные данные podcast_category_id и podcast_subcategory_id столбцы отображаются, как и ожидалось. Однако я хочу заменить podcast_category_id на category_name и podcast_subcategory_id на sub_category_name . Как мне это сделать?

Ответ №1:

Присоединяйтесь к этим таблицам.

     SELECT c.category_name, sc.sub_category_name, count(p.*)
    FROM podcasts p
    join categories c
      on c.category_id = p.podcast_category_id
    join sub_categories sc
      on sc.sub_category_id = p.podcast_subcategory_id
    where p.podcast_owner = 14 
      AND p.podcast_upload_time_stamp >= timestamp '2020-10-22 00:00:00'
    GROUP BY 1,2