# sql Количество товаров по категориям - PullRequest
0 голосов
/ 29 апреля 2020

Я создал таблицу ITEMS и таблицу CATEGORY.

таблицу CATEGORY

+----+--------+
| ID |  NAME  |
+----+--------+
|  1 | ANIMAL |
|  2 | FRUIT  |
+----+--------+

таблицу ITEMS

+----+--------+-------------+
| ID |  NAME  | ID_CATEGORY |
+----+--------+-------------+
|  1 | RABBIT |           1 |
|  2 | CAT    |           1 |
|  3 | APPLE  |           2 |
+----+--------+-------------+

Как рассчитать общее количество товаров по категориям? результат выглядит следующим образом:

+----------+-------------+
| CATEGORY | TOTAL_ITEMS |
+----------+-------------+
| ANIMAL   |   2         |
| FRUIT    |   1         |
+----------+-------------+

код mysql, который я пробовал, выглядит так:

SELECT CT.NAME,
       (SELECT COUNT(*) FROM ITEMS WHERE ID_CATEGORY = CT.ID_CATEGORY) AS TOTAL_ITEMS
FROM CATEGORY CT;

, но не удалось. результаты были не то, что я хотел. Я не знаю алгоритм для получения таких результатов.

1 Ответ

1 голос
/ 29 апреля 2020

Решение # 1 : объединение и группировка по

SELECT c.name, count(*)
FROM CATEGORY c INNER JOIN ITEMS i on c.ID = i.ID_CATEGORY
GROUP BY c.ID

Проверьте это для более подробной информации

JOIN : https://www.w3schools.com/sql/sql_join.asp

GROUP BY : https://www.w3schools.com/sql/sql_groupby.asp


Solution # 2

SELECT CT.NAME, (SELECT COUNT(*) FROM ITEMS 
                 WHERE ID_CATEGORY = CT.ID) AS TOTAL_ITEMS 
FROM CATEGORY CT;

Данный вопрос также корректен, но есть синтаксическая ошибка. Чтобы получить его, сравните этот SQL запрос с SQL, который вы пробовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...