2014-12-02 2 views
0

У меня есть две моделиВыполнение присоединиться

Company, который has_many клиентов и Customer, которые belongs_to компания

Я хочу, чтобы получить соотношение, где каждая строка выглядит примерно так:

[company.name, count(customers)] 

где последний столбец - количество клиентов в компании.

Company(id: integer, name: string) 

Customer(id: integer, name: string, company_id: integer) 

высоко ценится, благодаря

+0

да, мое плохое, спасибо – Tarlen

+0

желает вам, чтобы сделать это с помощью одного запроса? –

+0

можете ли вы использовать общие структуры таблиц/столбцов? – Shantanu

ответ

0

Если вы выдаете это:

Customer.count(group: company_id) 

он должен вернуть hash с company_id как ключи, и считали клиентов как ценности. Тогда вы можете попробовать это:

Company.joins(:customers).select("name, count(*)").all 
+0

@Tarlen, пожалуйста, попробуйте оба и предоставите запрос результата для последнего подхода. –

0

то вроде этого помогло бы

select company.id, company.name, count(*) 
from company join customer on customer.company_id = company.id 
group by compamy.id, company.name 
+0

ужасный, но как бы он выглядел, если бы я использовал активную запись? – Tarlen

Смежные вопросы