Bob*_*Ski 2 sql sql-server join
我有一个包含客户端数据的表,我必须将它与两个引用表连接才能获得所需的文本值.所以有人不知何故没有将所有数据都包含在一个引用表中,所以对于某些数据我需要从另一个表中获取值.
带数据的第一个表
ID ClientID CompanyID
1 199 80
2 187 91
3 85 1001
4 83 1145
Run Code Online (Sandbox Code Playgroud)
可以看到的公司ID从80到1200不等
问题是,只有> 1000的值存储在公司的参考表中,所以
tblCompanies
CompanyID CompanyName
1001 Microsoft
1002 Apple
1145 HP
Run Code Online (Sandbox Code Playgroud)
公司名称的其余部分存储在另一个表中
tblReference
ID FldName Label
80 Company Adobe
81 Company Amazon
91 Company Pixel
Run Code Online (Sandbox Code Playgroud)
tblReference有很多其他数据,但大多数情况下它只引用ID为80 - 90,而所有其他CompanyID来自tblCompanies ....
我怎么能加入这两张桌子?没有获得重复的记录.我尝试了UNION和UNIOAN ALL,但没有成功
首先将你tblcompanies和你的tblReferences桌子联合起来,然后加入:
SELECT t1.id, t1.clientid, t1.CompanyID, t2.CompanyName
FROM firstTable as t1
INNER JOIN
(
SELECT companyID, companyName FROM tblCompanies
UNION ALL
SELECT id, label FROM tblReference WHERE fldname = 'Company'
) t2 ON t1.CompanyID = t2.CompanyId
Run Code Online (Sandbox Code Playgroud)