簡體   English   中英

將內部聯接轉換為SQL子查詢

[英]Convert inner join to SQL Subquery

我的SQL查詢如下:我在該查詢中使用內部聯接...我想將其修改為子查詢

select distinct Auditdata.ID,        
ns.ProviderMaster_ID as CDRComment  
from Auditdata AuditData 
inner join AuditMaster       am 
on am.ID = AuditData.AuditMaster_ID 
inner join HomeCircleMaster hcm 
on hcm.Ori_CircleMaster_ID = am.CircleMaster_ID and hcm.Ori_ServiceTypeMaster_ID  = 1 and hcm.Dest_ServiceTypeMaster_ID = 1 inner join AuditTaggingMaster atm 
on atm.AuditMaster_ID = am.ID 
inner join NoSeriesMaster ns on 
(  ns.CircleMaster_ID = am.CircleMaster_ID or ns.CircleMaster_ID = hcm.Dest_CircleMaster_ID)   and ns.ProviderMaster_ID <>  am.ProviderMaster_ID and ns.ServiceTypeMaster_ID = 1 
inner join ProviderMaster_CallTypeMaster pm_ctm 
on pm_ctm.ProviderMaster_ID = am.ProviderMaster_ID                                                and pm_ctm.CallTypeMaster_ID = 101                                                and pm_ctm.CallTypeTagValue  =AuditData.CallTypeTag INNER JOIN NoSeriesMaster_Prefix PD ON AuditData.CallTo like PD.PrefixNo + '%'                                    AND AuditData.calltolen = PD.PrefixLen + PD.AfterPrefixLen  AND PD.PrefixNo + ns.NoSeries = LEFT(AuditData.CallTo, NoSeriesLen + PD.PrefixLen) where AuditData.TATCallType is null   and AuditData.AuditMaster_ID = 74   AND PD.PrefixType = 'SMS' 

請幫我

謝謝

我會嘗試發布美化查詢。 否則很難提供幫助。 嘗試解釋一下您正在嘗試這樣做。 有6個內部聯接。 您想更改哪一個。 無論如何。 您的問題似乎與這個問題非常相似。 請不要發表問題兩次。

除此之外,您似乎正在嘗試優化此查詢。 您為什么不問誰讓它更快? 在我看來,使用子查詢會使一切變得更糟。 如果您需要優化幫助,我們將需要更多信息,例如表結構,索引,行數等。

select distinct Auditdata.ID, 
       ns.ProviderMaster_ID as CDRComment
  from Auditdata AuditData
 inner join AuditMaster       am on am.ID = AuditData.AuditMaster_ID
 inner join HomeCircleMaster hcm on hcm.Ori_CircleMaster_ID       = am.CircleMaster_ID
                                and hcm.Ori_ServiceTypeMaster_ID  = 1
                                and hcm.Dest_ServiceTypeMaster_ID = 1
 inner join AuditTaggingMaster atm on atm.AuditMaster_ID = am.ID
 inner join NoSeriesMaster ns on (  ns.CircleMaster_ID = am.CircleMaster_ID 
                                 or ns.CircleMaster_ID = hcm.Dest_CircleMaster_ID)
                             and ns.ProviderMaster_ID <>  am.ProviderMaster_ID
                             and ns.ServiceTypeMaster_ID = 1
 inner join ProviderMaster_CallTypeMaster pm_ctm on pm_ctm.ProviderMaster_ID = am.ProviderMaster_ID
                                                and pm_ctm.CallTypeMaster_ID = 101
                                                and pm_ctm.CallTypeTagValue  =AuditData.CallTypeTag
 INNER JOIN NoSeriesMaster_Prefix PD ON AuditData.CallTo like PD.PrefixNo + '%'
                                    AND AuditData.calltolen = PD.PrefixLen + PD.AfterPrefixLen
                                    AND PD.PrefixNo + ns.NoSeries = LEFT(AuditData.CallTo, NoSeriesLen + PD.PrefixLen)
 where AuditData.TATCallType is null
   and AuditData.AuditMaster_ID = 74
   AND PD.PrefixType = 'SMS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM