左连接两个引用表以获得正确的值

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,但没有成功

JNe*_*ill 5

首先将你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)