Подсчет записей в одной таблице, которые соответствуют условию в другой таблице - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь получить количество записей из таблицы1, которые соответствуют категории в таблице2.

Таблицы могут выглядеть так, например:

ID     A          
1      value1   
2      value2
3      value3
4      value2

ID     A        Category
1      value1   Category1
2      value2   Category1
3      value3   Category2

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

Запрос, который я получил:

SELECT count(table1.A) as count, table2.Category from table1, table2 
WHERE table2.Category = 'Category1' AND table1.A = table2.A
GROUP BY table2.Category
ORDER BY count DESC

Ожидаемый результат:

Category1  3

Что я получу в результате:

Category1  6

Количество - это количество раз, которое A появляется в таблице1, умноженное наколичество раз A появляется в таблице2.Я также попробовал LEFT JOIN, но это дает мне тот же результат.

Как я могу предотвратить это и просто получить счет для table1?

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете использовать COUNT (DISTINCT), чтобы уменьшить счет, если вы используете столбец, который, как вы знаете, уникален в таблице 1.

SELECT COUNT(DISTINCT table1.id) as count, table2.Category 
FROM table1 JOIN table2 ON table1.A = table2.A 
WHERE table2.Category = 'Category1'
GROUP BY table2.Category
ORDER BY count DESC

PS: Обратите внимание, я также изменил это, чтобы использовать современныйСинтаксис JOINЭто не требуется для решения, но пришло время прекратить использовать синтаксис присоединения в стиле запятой 1989 года.

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