-1

我有一个我想要拉的客户列表,但我不确定我是否做得对。我有大约 20 000 条记录要处理,只是希望我能以正确的方式去做。基本上我有 2 个不同的客户端表,它们恰好属于 2 个不同的应用程序,但存储在同一个数据库中。

一个客户,John Doe (ex) 可以在两个客户表中具有不同的客户 ID,但是,在两个表中都有一个相同的唯一 ID。因此,例如 John Doe 在 tbl1 中的 clientID = 7,在 tb2 中的 ClientID = 11,但在两个 Client 表中,唯一 ID 为 129009。

这是基本结构。这是前两张桌子。

tblClient1                             tblServiceClient1
ClientID        UniqueID               ClientID          ClientServiceType
17              12345                  17                8
15              34567                  15                8

第二组表是

tblClient2                             tblClientService2
ClientID        UniqueID               ClientID           ClientServiceType
58              12345                  58                 8
89              34567                  89                 7

我希望得到的是来自两组表的客户端列表,其中: -Client 必须存在于 tblClient1 和 tblClient2 -Client 必须在 tblClientServiceType1 和 tblClientServiceType2 中具有 ClientServiceType = 8

这是我希望实现的目标:

ClientID1            ClientID2           UniqueID
17                   58                  12345

因此,我需要加入两个 ClientID 表中的客户端具有相同 UniqueID 并且两个客户端都具有 ClientSERviceType = 8 的表

我只看到这个客户端,因为另一个客户端的 ClientServiceType = 7

  Select tblClient1.ClientID, tblClient2.ClientID, tblClient1.UniqueID
       From tblClient1 
       inner join tblClientService1 on tblClient1.ClientID = tblClientService1.ClientID 
       inner join tblClient2 on tblClient1.UniqueID = tblClient2.UniqueID 
       inner join tblServiceClient2 on tblClient2.ClientID = tblServiceClient2.ClientID
  Group By tblClient1.ClientID, tblClient2.ClientID, tblClient1.UniqueID
  Having tblServiceClient1.ClientServiceType = 8 and tblServiceClient2.ClientServiceType=8
4

1 回答 1

2

以您的查询为例(看起来它会返回您想要的数据)我简化了一点。我还使用了别名,请注意它如何显着减少文本数量,从而使其更易于阅读。

Select c1.ClientID
    , c2.ClientID
    , c1.UniqueID
From tblClient1 c1
inner join tblClientService1 cs1 on c1.ClientID = cs1.ClientID 
inner join tblClient2 c2 on c1.UniqueID = c2.UniqueID 
inner join tblServiceClient2 sc2 on c2.ClientID = sc2.ClientID
    AND cs1.ClientServiceType = sc2.ClientServiceType
where cs1.ClientServiceType = 8
于 2018-06-07T14:19:19.213 回答