【发布时间】:2018-06-23 21:04:28
【问题描述】:
我的 Postgres 数据库中有 3 个表:
用户
Column | Type
--------+-----------------------
id | integer
name | character varying(50)
产品
Column | Type
-------------+-----------------------
id | integer
name | character varying(50)
user_id | integer
category_id | integer
分类
Column | Type
--------+-----------------------
id | integer
name | character varying(50)
用户数据示例
id | name
---+------
1 | John
2 | Sara
产品中的示例数据
id | name | user_id | category_id
---+----------------+---------+------------
1 | iPhone 8 | 1 | 1
2 | MacBook | 1 | 2
3 | Fidget Spinner | 1 | NULL
4 | Dell XPS | 1 | 2
5 | Samsung S8 | 2 | 1
类别中的示例数据
id | name
---+-----------
1 | Mobile Phones
2 | Laptops
3 | Toys
我的 Rails 项目中有一条路线,我希望这条路线的操作返回如下结果:
[
{
"category":"Mobile Phones",
"products":[
{
"id":1,
"name":"iPhone 8"
}
]
},
{
"category":"Laptops",
"products":[
{
"id":2,
"name":"MacBook"
},
{
"id":4,
"name":"Dell XPS"
}
]
},
{
"category":"Toys",
"products":[
]
}
]
基本上,当约翰调用这个端点时,他会看到他所有的产品。这里的主要内容是,我想显示所有类别,无论它们是否有产品。
请为此建议最好和最有效的 Rails ActiveRecord 或 SQL 语句。
【问题讨论】:
-
我会随心所欲地使用左连接
-
同时指定预期结果,并向我们展示您的查询尝试。
标签: sql ruby-on-rails ruby postgresql join