我想获取每个员工的电子邮件,电话和手机号码。
ContactDetailsType
包含Label
,即电子邮件,电话,传真...
ContactDetails
包含ContactDetailsTypeId
(ID ContactDetailsType
)和Info
,具有电话号码的值(例如)。
SELECT Concat(Concat(E.[firstname], ' '), E.[lastname]) AS full_name,
(SELECT cc.info
FROM [contactdetails] cc
LEFT JOIN [contactdetailstype] cd
ON cd.contactdetailstypeid = cc.contactdetailstypeid
WHERE cd.label = 'Phone') AS phone,
CDC.label,
CDT.label,
CD.info
FROM [employee] [E]
LEFT JOIN [af_adminfile] [AFA]
ON E.adminfileid = AFA.adminfileid
LEFT JOIN [af_contactdetails] [AFC]
ON AFC.adminfileid = AFA.adminfileid
LEFT JOIN [contactdetails] [CD]
ON CD.contactdetailsid = AFC.contactdetailsid
LEFT JOIN [contactdetailscategory] [CDC]
ON CDC.contactdetailscateroryid = CD.contactdetailscategoryid
LEFT JOIN [contactdetailstype] [CDT]
ON CDT.contactdetailstypeid = CD.contactdetailstypeid
我尝试了以下查询来获取电话,但出现以下错误:
子查询返回了多个值。当 子查询遵循=,!=,<,<=,>,> =,或当子查询用作 表达式。
答案 0 :(得分:1)
现在,您的子查询将提供所有联系方式,您需要一个相关查询,因此可以通过外部查询进行过滤。还要小心,因为您使用的是内部和外部相同的别名。
这可能有效,但是没有数据结构只是一个猜测。希望至少能让您对应该做什么有所了解。
(SELECT cc.info
FROM [contactdetails] cc
LEFT JOIN [contactdetailstype] cdt2
ON cdt2.contactdetailstypeid = cc.contactdetailstypeid
WHERE cdt2.label = 'Phone'
AND cc.contactdetailsid = cd.contactdetailsid -- the id from outside query
) AS phone,