Как рассчитать количество энтов по общим столбцам? - PullRequest
0 голосов
/ 11 октября 2018

В моей базе данных MySQL у меня есть 2 таблицы ( ALPHA и BETA ).Я пытаюсь сделать запрос SQL, который присоединит новый столбец к таблице ALPHA.В этом новом столбце (INFO_COUNT) мне нужно сохранить количество записей в поле INFO_ID.Мне нужен совет, как это сделать.

Стол «АЛЬФА» :

       TIME_KEY      | INFO_ID | STATUS
---------------------|---------|---------
 2018-04-08 10:00:00 | 1       | Green
 2018-04-08 10:00:00 | 2       | Red
 2018-04-08 10:00:00 | 3       | Red
 2018-04-08 10:00:00 | 4       | Green
 2018-04-08 10:00:00 | 5       | Green
 2018-04-08 10:00:00 | 6       | Green
 2018-04-08 10:00:00 | 7       | Red
 2018-04-08 10:00:00 | 8       | Green
 2018-04-08 10:00:00 | 9       | Green

СТОЛ «БЕТА» :

INFO_ID | LOCATION |
--------|----------|
1       | USA      |
5       | India    |
5       | India    |
8       | China    |
9       | Canada   |
9       | Canada   |

Хочу такой результат:

       TIME_KEY      | INFO_ID | STATUS | INFO_COUNT
---------------------|---------|--------|------------
 2018-04-08 10:00:00 | 1       | Green  | 1
 2018-04-08 10:00:00 | 2       | Red    | NULL
 2018-04-08 10:00:00 | 3       | Red    | NULL
 2018-04-08 10:00:00 | 4       | Green  | NULL
 2018-04-08 10:00:00 | 5       | Green  | 2
 2018-04-08 10:00:00 | 6       | Green  | NULL
 2018-04-08 10:00:00 | 7       | Red    | NULL
 2018-04-08 10:00:00 | 8       | Green  | 1
 2018-04-08 10:00:00 | 9       | Green  | 2

1 Ответ

0 голосов
/ 11 октября 2018

Это left join и агрегация.Вот один из способов:

select a.*, b.info_count
from alpha a left join
     (select b.info_id, count(*) as info_count
      from b
      group by b.info_id
     ) b
     on a.info_id = b.info_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...