复杂的SQL连接

时间:2012-08-06 04:21:28

标签: database sql-server-2008 tsql join

我对SQL连接相当新,但我在这里遇到了一个棘手的问题。我试图自己解决这个问题,并进行了搜索,但没有成功。

我有两个主要的SQL表

CustProfile

ClientID || ClientName 

CustTransaction

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`  

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

所以你只加入了两个不同的表格,但你需要分别加入这两个表格以获得每个不同类型的客户(公司或部门或部门)

如果是这种情况,您需要做的是为多次包含的表别名,这样就可以加入它,好像它是3个单独的表,一个用于corps,一个用于分区,一个用于部门。 / p>

我不确定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

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