首页 > 解决方案 > 在多个联接中使用同一个表

问题描述

我试图得到这个结果,但不知道如何实现。

Client id           Operator Name
---------------------------------
11                     John
12                     Helen
13                     Mark 

我有 3 张桌子。

表A

clientid             Operatorid
--------------------------------
11                         1
12                        Null
13                        Null

表B

Operatorid    Operatorname
---------------------------
1             John
2             Helen
3             Mark

表C

Client id      Operatorid         Description
---------------------------------------------
12              2                   S1
12              2                   S23
13              3                   S1

我的查询是

SELECT
    c.ClientID, c.ClientName, b.operatorname
FROM
    Clienttable c 
LEFT OUTER JOIN 
    (SELECT Clientid, OperatorID 
     FROM tableA) a ON a.ClientId = c.ClientId 
LEFT OUTER JOIN
    tableB ON b.operatorid = a. operatorid 
LEFT OUTER JOIN 
    (SELECT Clientid, OperatorID 
     FROM tableC 
     WHERE Description LIKE S1) tc ON tc.ClientId = c.ClientId
             tableB b.operatorid = tc. operatorid

提前致谢

标签: sqlsql-servertsql

解决方案


首先,从tablea中选择client_id和operator_id,加入tableb得到operator_name(左图)

二、从c表中选择client_id和operator_id,加入tableb得到operator_name(右图)

最后将左和右联合以获得组合结果。(合并左右)

以下查询将执行以下操作:

SELECT 
     a.client_id, 
     a.operator_id, 
     b.operator_name 
FROM tablea a 
JOIN tableb b 
ON a.operator_id = b.operator_id 
UNION 
SELECT 
     c.client_id, 
     c.operator_id, 
     b.operator_name 
FROM tablec c 
JOIN tableb b 
ON c.operator_id = b.operator_id

参考:INSERT INTO Table from multiple tables用于从多个表中插入。


推荐阅读