【发布时间】:2016-04-02 17:00:22
【问题描述】:
我有以下表格:
- table1 id、user_id、first_name、last_name
- table2 id、user_id、company_name、first_name、last_name、partner_id
- table3 商家 ID,商家名称
我想创建将返回数据行的查询: user_id, (first_name last_name), (business_name, business_name ...) 当用户与多个业务相关联时,如下所示: 123,John Doe,Business1,Business2
当我使用以下查询时,我可以得到一些重复的行:
SELECT table1.first_name, table1.last_name, table2.copmany_name,
(case when concat(table1.first_name, table1.last_name) = '' then table2.company_name else concat_ws(' ', table1.first_name,table1.last_name) end) as name,
table3.name as business_name
FROM table1
JOIN table2 ON table1.user_id = table2.user_id
JOIN table3 ON table2.partner_id = table3.id
这是该查询的示例:
123, John Doe, Business1
123, John Doe, Business2
125, Marie Bird, Business3
我想得到:
123, John Doe, Business1, Business2
125, Marie Bird, Business3
这可能吗?
谢谢
【问题讨论】:
-
到文件还是只到查询结果?如果是前者,请查看stackoverflow.com/questions/1517635/…。如果是后者,请查找连接运算符
|| -
只是为了得到查询结果。我的问题是如何连接与相同 user_id 相关的 2 行或更多行
-
啊,我现在明白了...我没有很好地阅读您的问题。
-
您是否需要完全按照您列出的方式查看它(作为纯 CSV),或者如果您在单行中获得多行数据,则实际输出不同在理论上是可以的,你概述的方式?
标签: sql postgresql select join