【发布时间】:2017-07-23 06:12:39
【问题描述】:
我有一个如下的联系表:
contactid | contactname
----------|-------------
C1 | Name1
C2 | Name2
我有一张如下的通讯表
contactid | communication_type | communication_string
----------|--------------------|---------------------
C1 | Phone | 9090909090
C1 | Email | c1@email.com
C2 | Phone | 9191919191
C2 | Email | c1@email.com
现在我的要求是查询这两个表,结果如下:
contactid | contactname | phonenumber | emailaddress
----------|-------------|---------------|----------------
C1 | Name1 | 9090909090 | c1@email.com
C2 | Name2 | 9191919191 | c2@email.com
如果我做一个常规的加入,就像
SELECT cont.contactid, cont.contactname,
comm.communication_type, comm.communication_string
FROM contact cont
LEFT JOIN communication comm ON cont.contactid = comm.contactid
我会得到类似的东西
contactid | contactname | communication_type| communication_string
----------|-------------|-------------------|----------------
C1 | Name1 | Phone | 9090909090
C1 | Name1 | Email | c1@email.com
C2 | Name2 | Phone | 9191919191
C2 | Name2 | Email | c2@email.com
但这不是我想要的。 我希望结果中的通信字符串位于同一行,而不是不同的行。
这有可能得到这样的结果吗?
还有一个要求是解决方案应该通用,以适用于所有数据库。
【问题讨论】:
-
不要标记每个数据库老兄。现在来吧。这是一个关键问题,他们的做法各不相同。
标签: mysql database oracle postgresql db2