Преобразовать внутреннее объединение в подзапрос SQL - PullRequest
0 голосов
/ 15 июля 2009

Мой 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' 

Пожалуйста, помогите мне

* 1006 спасибо *

1 Ответ

3 голосов
/ 15 июля 2009

Я бы попытался опубликовать запрос на украшение. В противном случае это трудно помочь. Попробуйте также объяснить, что вы пытаетесь сделать. Есть 6 внутренних соединений. Какой бы вы хотели изменить. Тем не мение. Ваш вопрос очень похож на This . Пожалуйста, не задавайте вопросы дважды.

Кроме того, кажется, вы пытаетесь оптимизировать этот запрос. Почему бы тебе просто не спросить, кто сделает это быстрее? По моему скромному мнению, использование подзапросов сделает все хуже. Если вам нужна помощь в оптимизации, нам потребуется дополнительная информация, такая как структура таблицы, индексы, количество строк и т. Д.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...