2

私はSQL結合にかなり慣れていませんが、ここで注意が必要な問題があります。私は自分でこれを解決しようとしました、そして同様に検索しました、しかし失敗しました。

2つのプライマリ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`  

誰かが結合クエリを提供できることを願っています。前もって感謝します

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つの異なるテーブルのみを結合しますが、異なるタイプの顧客(Corp、Div、またはDept)のそれぞれを取得するには、これら2つのテーブルを3回別々に結合する必要があります。

その場合は、含めるテーブルに複数回エイリアスを設定して、軍団用、師団用、部門用の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 に答える