use*_*355 5 sql postgresql scala slick
我有这3张桌子。鉴于Group Name我想找到Product Table该组的所有产品,然后从Version table
产品组表
id group_name
---------------------------
1 Nice
2 Very Nice
Run Code Online (Sandbox Code Playgroud)
产品表
prod_id name group_id
---------------------------
1 something 2
2 psp3 1
3. other one 2
Run Code Online (Sandbox Code Playgroud)
版本表
id prod_id version
---------------------------
1 2 1.0
2 2 1.1
3 3 2.3
4 1 0.1
5. 1 0.2
Run Code Online (Sandbox Code Playgroud)
例如给定组名称Very Nice,我期望的输出是
Group_name prod_name version
---------------------------------
Very Nice something 0.2
Very Nice other one 2.3
Run Code Online (Sandbox Code Playgroud)
我试图对所有 3 个表进行 Join,然后进行区分,然后按 desc 排序并选择第一个表。但我最终只得到 1 而不是上面的结果。想知道 sql 查询是什么样子的吗?如果重要的话,我正在使用 PostgreSQL、Scala/Slick。
使用DISTINCT ON:
SELECT DISTINCT ON (pg.id, p.prod_id)
pg.group_name, p.name AS prod_name, v.version
FROM product_group pg
LEFT JOIN product p ON pg.id = p.group_id
LEFT JOIN version v ON v.prod_id = p.prod_id
ORDER BY pg.id, p.prod_id, v.version DESC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2846 次 |
| 最近记录: |