Подсчет и объединение в SQL (oracle)

#sql #oracle #oracle-sqldeveloper

#sql #Oracle #oracle-sqldeveloper

Вопрос:

Моя база данных содержит 2 таблицы с именами products и product_categories.

Product_categories содержат category_id и category_name Продукты содержат category_id и другую не относящуюся к делу информацию по этому вопросу.

Мне нужно подсчитать количество продуктов, используя category_id из таблицы products, а также отобразить их имя, которое находится в таблице product_categories.

 Select * FROM product_categories
  

отображает :

 category_id, category_name
    1   CPU
    2   Video Card
    3   RAM
    4   Mother Board
    5   Storage
  

И

 Select * FROM products
  

отображение (сокращенное):

                 category_id
399.77  564.89  1
481.56  554.99  1
4058.99 5499.99 2
3619.14 4139    2
2505.04 3254.99 2
... UPTO CATEGORY_ID 5
  

Текущий оператор :

 SELECT category_id , COUNT (1) AS "TOTAL"
FROM products
GROUP BY category_id;
  

Вывод:

 Category_id, total
    1   70
    2   50
    5   108
    4   60
  

ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ: мне нужно отобразить идентификатор категории, за которым следует название категории, и, наконец, общее количество продуктов.

Комментарии:

1. Укажите желаемый результат.

Ответ №1:

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

 select p.category_id,
       c.category_name,
       count(*) as total
from products p join product_categories c on c.category_id = p.category_id
group by p.category_id,
         c.category_name
  

Возможно, вам захочется включить его во внешнее объединение, если вы хотите отобразить категории, которых нет в products таблице.