2009-07-15 67 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