我有关于客户电子邮件地址和电话号码的信息,但数据存储在不同的表中,每个客户产生几行。
我的主表有customerId等,我需要加入电子邮件和电话号码。为此,我有一个“转换”表,其中包含连接表的communication_id。
例如
主表:
CustomerID var1 var2 ...
123 1 7
我需要使用的转换表将主表连接到包含电子邮件和电话的表格,如下所示
CustomerID CommID
123 780
123 781
123 782
电子邮件表格看起来像这样
commID email
780 a@a.com
并且带有电话号码的表格可能如下所示
commID phone
781 88888
如果我将上述3个表连接到我的主表,我所取得的成就是
CustomerID var1 var2 email phone
123 1 7 a@a.com ?
123 1 7 ? 88888
123 1 7 ? ?
我理解为什么我会得到3行,但我想要实现的是像这样的单行
CustomerID var1 var2 email phone
123 1 7 a@a.com 88888
谢谢 编辑:
连接语法是
sel * from maintable
left join Communication on maintable.CustomerID=Communication.CustomerID
left join email on email.commID=Communication.CommID
left join phone on phone.commID=Communication.CommID
答案 0 :(得分:2)
要将多行合并为一行,您通常会执行GROUP BY:
SELECT maintable.CustomerID, MAX(email), MAX(phone)
FROM maintable
LEFT JOIN Communication ON maintable.CustomerID=Communication.CustomerID
LEFT JOIN email ON email.commID=Communication.CommID
LEFT JOIN phone ON phone.commID=Communication.CommID
GROUP BY maintable.CustomerID