2

我对 SQL 联接相当陌生,但这里有一个棘手的问题。我试图自己解决这个问题,也进行了搜索,但没有成功。

我有两个主 SQL 表

客户档案

ClientID || ClientName 

客户交易

CorpID || DivID || DeptID 

我需要按如下方式显示我的输出:

`CorpID` `CorpIDClientName` `DivID` `DivIDName` `DeptID` `DeptIDName`  

CustTransaction.CorpID join on CustProfile.ClientID to get `CorpIDClientName`  
CustTransaction.DivID join on CustProfile.ClientID to get `DivIDName`  
CustTransaction.DeptID join on CustProfile.ClientID to get `DeptIDName`  

我希望有人可以提供加入查询。提前致谢

4

2 回答 2

2

试试这个:

SELECT  a.CorpID,
        b.ClientName AS CorpIDClientName,
        a.DivID,
        c.ClientName AS DivIDName,
        a.DeptID,
        d.ClientName AS DeptIDName
FROM    CustTransaction a
            INNER JOIN CustProfile b
                on a.CorpID = b.ClientID
            INNER JOIN CustProfile c
                on a.DivID = c.ClientID
            INNER JOIN CustProfile d
                on a.DeptID = d.ClientID
于 2012-08-06T04:36:33.227 回答
1

我理解正确吗?您将公司、部门和部门都存储在 CustProfile 表中。

因此,您只加入 2 个不同的表,但您需要将这 2 个表分别加入 3 次才能获得每种不同类型的客户(Corp 或 Div 或 Dept)

如果是这种情况,您需要做的是为您包含多次的表添加别名,这样您就可以像加入 3 个单独的表一样加入它,一个用于军团,一个用于部门,一个用于部门。

我不确定 MSSQL 中的语法是否相同,但对于大多数 SQL 数据库,您的连接查询看起来像这样:

SELECT corps.ClientID CorpID, corps.ClientName CorpIDClientName,
       divs.ClientID DivID, divs.ClientName DivIDName,
       depts.ClientID DeptID, depts.ClientName DeptIDName
FROM CustProfile corps, CustProfile divs, CustProfile depts, CustTransaction t
WHERE t.CorpID = corps.ClientID 
  AND t.DivID = divs.ClientID
  AND t.DeptID = depts.ClientID

我认为,这应该或多或少地做你想要的......

于 2012-08-06T04:32:36.990 回答