Как подсчитать строки tableA при присоединении к tableB - PullRequest
0 голосов
/ 27 февраля 2020

В базе данных Access у TableA есть внешний ключ для TableB. Таблица B содержит столбец с четырьмя возможными значениями. Мне нужно посчитать количество строк в TableA для одного из четырех значений в TableB. Это была моя первоначальная попытка:

SELECT      COUNT(*) As TableACount 
FROM        TableA 
INNER JOIN  TableB ON TableA.fk_tableB = TableB.pk_tableB 
WHERE       TableB.[value] = 1

Вот еще одна попытка:

SELECT      COUNT(*) As TableACount,
            TableB.[value]
FROM        TableA 
INNER JOIN  TableB ON TableA.fk_tableB = TableB.pk_tableB 
WHERE       TableB.[value] = 1
GROUP BY    TableB.[value]

Результат, возвращаемый в обоих запросах, выглядит как число строк TableA, умноженное на число строк TableB, в которых они находятся присоединился к. Как я могу получить только количество строк TableA?

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Вы можете использовать отдельный счет:

SELECT COUNT(DISTINCT a.pk_tableA) AS TableACount 
FROM TableA a
INNER JOIN TableB b
    ON a.fk_tableB = b.pk_tableB 
WHERE b.[value] = 1;

Или использовать logi c:

SELECT COUNT(*) AS TableACount
FROM TableA a
WHERE EXISTS (SELECT 1 FROM TableB b WHERE b.pk_tableA = a.fk_tableB AND b.[value] = 1);
0 голосов
/ 27 февраля 2020
SELECT      COUNT(*) As TableACount,
            TableA.fk_tableB
FROM        TableA 
INNER JOIN  TableB ON TableA.fk_tableB = TableB.pk_tableB 
WHERE       TableB.[value] = 1
GROUP BY    TableA.fk_tableB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...