2013-09-28 2 views
0

Допустим, у меня есть 2 таблицыSQL подсчета строк из нескольких таблиц

Компании

company_id  
name 

Пользователи

id 
company_id 
name 

каждая компания имеет несколько пользователей, назначить на него ..., который упоминается в поле company_id из каждой записи в таблице пользователей

КАК я могу получить запись, показывающую (company_id), (company_name) and (number or users)

для например:

id# 1234 | name# Microsoft | n of users# 2000 

Я не знаю, как сделать этот запрос, я знаю, я должен использовать функцию COUNT(), но я не знаю, как

ответ

1

Если вы хотите, чтобы все компании, даже если они не имеют каких-либо пользователей еще используют OUTER JOIN

SELECT c.company_id, c.name company_name, COUNT(u.id) no_of_users 
    FROM companies c LEFT JOIN users u 
    ON c.company_id = u.company_id 
GROUP BY c.company_id, c.name 

Пример вывода:

 
| COMPANY_ID | COMPANY_NAME | NO_OF_USERS | 
|------------|--------------|-------------| 
|   1 |  Company1 |   3 | 
|   2 |  Company2 |   2 | 
|   3 |  Company3 |   0 | 

Вот SQLFiddle демо

+0

это фактически ДАЖЕ ЛУЧШЕ: D –

0

Try:

SELECT companies.company_id,companies.company_name,COUNT(users.id) 
FROM companies, users 
WHERE companies.id = users.company_id 
group by companies.id 
0

это будет вопрос

select Companies.company_id,Companies.name,count(Users .id) from Companies,Users where Companies=company_id and Users =company_id group by company_id 
Смежные вопросы