2009-07-15 9 views
0

mon SQL Query est la suivante: im en utilisant jointure dans cette requête ... je veux modifier cela en sous-requêtejointure interne à SQL sous-requête

sélectionnez Auditdata.ID distincts, comme ns.ProviderMaster_ID CDRComment à partir de Auditdata AuditData joint interne AuditMaster am sur am.ID = AuditData.AuditMaster_ID jointure interne HomeCircleMaster hcm sur hcm.Ori_CircleMaster_ID = am.CircleMaster_ID et hcm.Ori_ServiceTypeMaster_ID = 1 et hcm.Dest_ServiceTypeMaster_ID = 1 jointure interne AuditTaggingMaster atm sur atm.AuditMaster_ID = am. ID joint interne NoSeriesMaster ns (ns.CircleMaster_ID = am.CircleMaster_ID ou ns.CircleMaster_ID = hcm.Dest_CircleMaster_ID) et ns.ProviderMaster_ID <> am.Provider Master_ID et ns.ServiceTypeMaster_ID = 1 jointure interne ProviderMaster_CallTypeMaster pm_ctm sur pm_ctm.ProviderMaster_ID = am.ProviderMaster_ID et pm_ctm.CallTypeMaster_ID = 101 et pm_ctm.CallTypeTagValue = AuditData.CallTypeTag INNER JOIN NoSeriesMaster_Prefix PD ON AuditData.CallTo comme PD.PrefixNo + '%' AND AuditData.calltolen = PD.PrefixLen + PD.AfterPrefixLen ET PD.PrefixNo + ns.NoSeries = GAUCHE (AuditData.CallTo, NoSeriesLen + PD.PrefixLen) où AuditData.TATCallType est null et AuditData.AuditMaster_ID = 74 AND PD.PrefixType = ' SMS »
S'il vous plaît aidez-moi

Thanx

+1

Certains formatage aiderait. –

+0

Il est trop confus s'il vous plaît organiser ur requêtes et séparer les déclarations SQL pour bien le comprendre – Ahmy

+0

Cela ressemble au même utilisateur qui a posté ceci: http://stackoverflow.com/questions/1126466/slow-update-primary-key –

Répondre

3

Je voudrais essayer de poster la requête embellis. Sinon, il est difficile d'aider. Essayez d'expliquer aussi ce que vous essayez de faire. Il y a 6 jointures internes. Lequel voulez-vous changer? Quoi qu'il en soit. Votre question semble être assez similaire à This one. S'il vous plaît ne postez pas de questions deux fois. En dehors de cela, il semble que vous essayez d'optimiser cette requête. Pourquoi ne demandez-vous pas simplement qui le rendre plus rapide? À mon humble avis, l'utilisation de subquerys va aggraver les choses. Si vous besoin d'aide pour l'optimisation, nous aurions besoin de plus d'informations comme la structure de la table, les index, nombre de lignes, etc ...

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

Pouvons-nous supprimer la jointure interne à partir de ci-dessus Query et écrire sous-requête au lieu de jointure interne – John

+0

alors comment peut-être rapide ci-dessus Query .... – John

+0

une question est que ... est joint intérieur exécuter ligne par ligne ou pas .. signifie juste comme des boucles ??? – John

Questions connexes