#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;