MS Access COUNT с INNER JOIN - PullRequest
       1

MS Access COUNT с INNER JOIN

0 голосов
/ 19 сентября 2018

Поставлен в тупик из-за проблемы, связанной с БД MS ACCESS и двумя таблицами, в попытке получить два разных результата записи путем подсчета.

Обе таблицы, с которыми я работаю, имеют поле первичного ключа, а такжеполе, которое содержит 1 или 0, чтобы пометить, если запись помечена как удаленная.

Проблема в том, что я не могу получить общее количество и разницу из этого запроса, я могу только получитьколичество всех записей, а не только одной, которая не помечена для удаления.

Пример Категория имеет две записи содержимого, связанные с ним, но одна имеет 1 в поле удаления, другая имеет 0. Я пытаюсь получить данные.

Я пытался использовать SUM, но при этом получаю ошибки от MS ACCESS.Это текущая строка запроса, с которой я работал ниже.

Чтобы уточнить, причина этого в том, что я могу затем получить два результата и обработать разницу на стороне клиента, как только получу данные отнабор записей.

Одна категория может иметь более одного содержимого, а некоторые из содержимого, связанного с каждой категорией, могут иметь некоторые записи, помеченные для удаления, а другие - нет.

Ниже приведен SQL I 'м работает с.

 Count(CONTENT.contentId) as cntDifference SUM(CASE WHEN cntDifference = 1 
 then 1 else 0) has also not proven to be successful.

 SELECT CATEGORY.categoryId, CATEGORY.categoryTitle, CATEGORY.categoryDate, 
 Count(CONTENT.contentId) AS cntTotal, Last(CONTENT.contentDate) AS cntDate, 
 CATEGORY.isDeleted AS catDel 
 FROM CATEGORY 
 LEFT JOIN CONTENT ON CATEGORY.categoryId = CONTENT.categoryId
 GROUP BY CATEGORY.categoryId, CATEGORY.categoryTitle, 
 CATEGORY.categoryDate, CATEGORY.userLevel, CATEGORY.isDeleted HAVING 
 (((CATEGORY.isDeleted)=0))
 ORDER BY CATEGORY.categoryTitle

1 Ответ

0 голосов
/ 19 сентября 2018
HAVING  (((CATEGORY.isDeleted)=0)) 

отфильтровывает удаленные записи, так что ваш счетчик удаленных записей совпадает с количеством всех удаленных записей.

Чтобы получить количество удаленных / не удаленных записей, удалите его и используйте:

SUM(IIF(CATEGORY.isDeleted=0,1,0)) AS CountOfNonDeleted

для не удаленных

и

SUM(IIF(CATEGORY.isDeleted=1,1,0)) AS CountOfDeleted

для удаленных.Вы также можете использовать эти выражения, чтобы получить разницу между общим, удаленным и не удаленным количеством.

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