Как подсчитать количество объектов, которые не имеют определенных атрибутов, сгруппированных по общему атрибуту в схеме EAV (ish)? - PullRequest
0 голосов
/ 02 июля 2011

Я пытаюсь подсчитать по регионам количество файлов, которые НЕ содержат «важных» атрибутов, учитывая следующий набор данных:

files
------------------------------------
id | file                  | region
------------------------------------
1  | data.xml              | eastern
2  | 2011-01-01-report.xml | eastern
3  | regional report.xml   | western
4  | data.xml              | central
5  | 2010 summary.xml      | eastern

file_attributes
--------------------------------------------
file_id   | attribute   | value | importance
--------------------------------------------
1         | Patients    | 18    | 0
1         | Deaths      | 17    | 1
2         | Clients     | 5     | 0
3         | Refunds     | 12    | 1
5         | Deaths      | 4     | 1

Я могу получить подсчет количествафайлы, которые имеют важные атрибуты, такие как:

SELECT
  region
  , COUNT(f.id) AS file_count
  , COUNT(DISTINCT if(fa.importance = 1, f.id)) AS files_w_important_attr
  , COUNT(DISTINCT if(fa.importance = 0, f.id)) AS files_w_unimportant_attr
FROM files AS f
  LEFT JOIN object_attributes AS fa
    ON f.id = fa.object_id
GROUP BY f.region

Это дает следующие результаты:

region  | file_count | files_w_important_attr | files_w_unimportant_attr
------------------------------------------------------------------------
central | 1          | 0                      | 0
eastern | 3          | 2                      | 2
western | 1          | 1                      | 0

У меня возникают проблемы с выяснением, как получить количество файлов без важных атрибутов,Обратите внимание, что я не пытаюсь получить количество файлов, которые имеют неважные атрибуты, что и дает 3-й столбец в приведенном выше запросе.Я хочу получить следующие результаты:

region  | file_count | files_w_important_attr | files_w_NO_important_attr
------------------------------------------------------------------------
central | 1          | 0                      | 1
eastern | 3          | 2                      | 1
western | 1          | 1                      | 0

1 Ответ

0 голосов
/ 02 июля 2011

Как насчет этого?

СУММА (fa.importance is NULL) AS nulledFiles

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