Ruby on rails rubyonrails中多表的join操作
在我的postgresql数据库中有三个表,分别名为“审计”、“位置”、“公司” 我想通过连接这些表来检索数据。我有一个可执行的sql查询,它给出了我的预期结果。我想将其转换为ruby on railsRuby on rails rubyonrails中多表的join操作,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,在我的postgresql数据库中有三个表,分别名为“审计”、“位置”、“公司” 我想通过连接这些表来检索数据。我有一个可执行的sql查询,它给出了我的预期结果。我想将其转换为ruby on rails select a.name as cname, b.name as lname, count(c.company_id) as count from companies as a, locations as b, audits as c where a.id=c.company_id and b
select a.name as cname, b.name as lname, count(c.company_id) as count
from companies as a, locations as b, audits as c
where a.id=c.company_id and b.id =c.location_id
group by a.name,b.name;
我将尝试从您的查询中重新创建模型(我可能会弄错,所以您也应该将其粘贴到查询中): 因此,要重新创建查询,请执行以下操作:
Company.joins(:locations, :audits)
.group("companies.name", "locations.name")
.count("audits.company_id")
结果将是一个散列,其中键是由公司名称和位置名称组成的数组,值是如下所示的计数:
{[company_name, location_name] => count, ...}
这将导致以下查询:
SELECT COUNT(audits.company_id) AS count_audits_company_id, companies.name AS companies_name, locations.name AS locations_name
FROM "companies" INNER JOIN "locations" ON "locations"."company_id" = "companies"."id"
INNER JOIN "audits" ON "audits"."company_id" = "companies"."id"
GROUP BY companies.name, locations.name
更多信息
SELECT COUNT(audits.company_id) AS count_audits_company_id, companies.name AS companies_name, locations.name AS locations_name
FROM "companies" INNER JOIN "locations" ON "locations"."company_id" = "companies"."id"
INNER JOIN "audits" ON "audits"."company_id" = "companies"."id"
GROUP BY companies.name, locations.name