2009-07-15 40 views
0

我的SQL查詢如下:使用該查詢內部聯接 IM ... 我想修改成子查詢轉換內部連接到SQL子查詢

選擇不同Auditdata.ID,ns.ProviderMaster_ID爲CDRComment來自Auditdata AuditData內部連接AuditMaster am am.ID = AuditData.AuditMaster_ID內部連接HomeCircleMaster hcm on hcm.Ori_CircleMaster_ID = am.CircleMaster_ID和hcm.Ori_ServiceTypeMaster_ID = 1並且hcm.Dest_ServiceTypeMaster_ID = 1內部連接AuditTaggingMaster atm on atm.AuditMaster_ID = am。 ID內部連接NoSeriesMaster ns on(ns.CircleMaster_ID = am.CircleMaster_ID或ns.CircleMaster_ID = hcm.Dest_CircleMaster_ID)和ns.ProviderMaster_ID> am.Provider Master_ID和ns.ServiceTypeMaster_ID = 1內部連接ProviderMaster_CallTypeMaster pm_ctm on pm_ctm.ProviderMaster_ID = am.ProviderMaster_ID和pm_ctm.CallTypeMaster_ID = 101和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)其中AuditData.TATCallType爲空,AuditData.AuditMaster_ID = 74 AND PD.PrefixType ='短信」
請幫我

感謝名單

+1

某些格式會有所幫助。 – 2009-07-15 12:49:12

+0

它太困惑了,請組織你的查詢和單獨的SQL語句,以便更好地理解它 – Ahmy 2009-07-15 12:50:51

+0

這看起來像發佈這個相同的用戶:http://stackoverflow.com/questions/1126466/slow-update-primary-key – 2009-07-15 12:56:10

回答

3

我會嘗試後美化查詢。否則很難提供幫助。試着解釋你想做什麼。有6個內部連接。你想要改變哪一個。不管怎麼說,你的問題似乎與This one非常相似。請不要兩次提問。

除此之外看來你正試圖優化這個查詢。你爲什麼不問問誰來讓它更快?在我看來,使用subquerys會讓事情變得更糟。 如果您需要優化我們需要更多像表結構,索引,行數等信息......

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 
+0

我們是否可以從上面刪除內部連接查詢和寫入子查詢而不是內部連接 – John 2009-07-15 13:00:40

+0

那麼如何能夠快速查詢.... – John 2009-07-15 15:20:17

+0

一個問題是... 是內部連接運行行還是不行..means就像循環? – John 2009-07-15 15:27:28