Подсчет дочерних элементов от родительского значения - PullRequest
3 голосов
/ 13 марта 2019

У меня есть таблица типа conversations и conversation_timelines

разговоры пример таблицы

|  id   |   last_active   |   category_id   |
|-------------------------------------------|
|  1    |   1552462134    |        1        |
|  2    |   1552461332    |        1        |
|  3    |   1552462312    |        2        |
|  4    |   1552461772    |        1        |

разговор_временные линии пример таблицы

|  id   |  conversation_id  |  message  |  created_time  |
|--------------------------------------------------------|
|  1    |        1          |  hi       |  1552462066    |
|  2    |        1          |  hello    |  1552462172    |
|  3    |        1          |  world    |  1552462188    |
|  4    |        2          |  another  |  1552462141    |

Я хочу запросить Подсчет количества записей в conversation_timelines , у которых created_time > conversation's last_active WHEREversations.category_id = 1

и итоговый мир будет похож на

|  conversation_id  |  count  |
|         1         |    2    |
|         2         |    1    |

Ответы [ 2 ]

4 голосов
/ 13 марта 2019

используйте join и group by, как показано ниже

  SELECT ct.conversation_id,count(ct.message)
  FROM conversation_timelines ct
  INNER JOIN  conversation c on c.id=ct.conversation_id and c.category_id=1
  and ct.created_time>c.last_active
  GROUP BY ct.conversation_id
3 голосов
/ 13 марта 2019

Вы можете использовать следующее решение, используя JOIN с GROUP BY:

SELECT c.id AS `conversation_id`, COUNT(ct.id) AS `count`
FROM conversation c INNER JOIN conversation_timelines ct ON c.id = ct.conversation_id 
WHERE ct.created_time > c.last_active AND c.category_id = 1
GROUP BY c.id

демо на dbfiddle.uk

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