Подсчет строк при группировке по нескольким полям - PullRequest
0 голосов
/ 09 июля 2019

У меня есть следующий запрос

Select parent.*,

( Select ?????????
     from  event e
     where  e.company_id = parent.company_id
       AND e.event_type_id in (10, 11, 12)
       AND  
        e.email in 
         (Select DISTINCT u.email
             from  users u  where  u.parent_id = parent.id )


     and e.subject_id in 
        (Select DISTINCT s.subject_id from  subjects s  where s.parent_id = parent.id ) 
    GROUP by e.email, e.subject_id ) as done

from parent_table parent

Мне нужно поставить что-нибудь вместо ???????? подсчитать строки подзапроса

Я попытался обернуть его другим подзапросом

Select count(*)  from (.........)

но в этом случае мой внутренний запрос не видит родительскую таблицу

Unknown column 'parent.company_id' in 'where clause'

Сам подзапрос возвращает таблицу как

----------------------------------------
|   email   |    subject    |    count  |
----------------------------------------
|   email1  |    1          |    1      |
|   email2  |    5          |    3      |
|   email3  |    20         |    22     |

так что его события подсчитываются по парам электронной почты и темы

на верхнем уровне мне нужно просто количество таких пар

UPDT:

кажется

COUNT(DISTINCT e.email, e.subject_id) вместо GROUP by e.email, e.subject_id ) у меня отлично работает

1 Ответ

0 голосов
/ 09 июля 2019

( Select COUNT(DISTINCT e.email, e.subject_id)
     from  event e
     where  e.company_id = parent.company_id
       AND e.event_type_id in (10, 11, 12)
       AND  
        e.email in 
         (Select DISTINCT u.email
             from  users u  where  u.parent_id = parent.id )


     and e.subject_id in 
        (Select DISTINCT s.subject_id from  subjects s  where s.parent_id = parent.id )  ) as done

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