Как ПОДСЧИТАТЬ пользователей из другой таблицы с помощью соединения в SQL?

#sql #join #count

Вопрос:

У меня есть 3 таблицы, я соединил 2 таблицы, так что я получаю что-то такое, давайте назовем это Таблицей1, Иногда у этого есть дубликаты, так как информация была заполнена неправильно

идентификатор компании название компании Расположение
1 A
1 A X
2 B Y
3 C1 Z
3 C Z

Теперь у меня также есть еще одна таблица с пользователями для каждой компании, назовите ее таблицей 2

идентификатор компании идентификатор пользователя
1 wwdw
2 dfsg
2 dasd
3 sfad
3 грустно

Я хочу присоединиться к этим таблицам и получить таблицу, которая подсчитывает пользователей в каждом идентификаторе компании (повторяется для дубликатов).

идентификатор компании название компании Расположение учетная запись пользователя
1 A 1
1 A X 1
2 B Y 2
3 C1 Z 2
3 C Z 2

Есть идеи, как это сделать?

Это мое первое объединение для таблицы 1, как бы я отредактировал это, чтобы получить окончательную таблицу

 SELECT clg.company_id, clg.name, c.location_address FROM clg, c

WHERE clg.company_id = c.id
 

Комментарии:

1. Ты забыл об FROM этом пункте.

Ответ №1:

Я бы предложил подзапрос, а не JOIN :

 select t1.*,
       (select count(*)
        from table2 t2
        where t2.company_id = t1.company_id
       ) as num_users;
from table1 t1;
 

Если у вас есть желание JOIN , то объединяйтесь, прежде чем присоединиться:

 select t1.*, t2.num_users
from table1 t1 join
     (select company_id, count(*) as num_users
      from table2 t2
      group by company_id
     ) t2
     on t1.company_id= t2.company_id;