2017-03-03 5 views
1

mich Vorwort Lassen Sie sagen, dass ich ein Anfänger bin, so fühlen sich frei, die Abfragen besser aussehen zu lassen, wie Sie für richtig halten. Wie auch immer, ich habe Probleme, alle meine zwei Abfragen zu kombinieren, was ich für einfacher hielt als zu versuchen, beides in einer Tabelle zu kombinieren. Ich habe versucht, eine Union, aber das gibt nur Spalten aus der ersten Abfrage. Was ich erreichen möchte, ist die Verbindung der ersten Abfrage mit der zweiten mit dem TrainProgram. UserLastName ist die eine Spalte, die ich WIRKLICH brauche, aber sie hat es nicht durchgemacht. Jede Hilfe würde sehr geschätzt werden. Vielen Dank. Hier ist die erste Abfrage:Die Kombination von zwei SQL-Abfragen in einem ordentlich Tabelle

select 
    aa.TrainProgramID 
    , aa.TrainProgram_OrganizationalUnitName 
    , aa.TrainProgramMetaDataTypeName 
    , aa.TrainProgramName 
    , a.Activity_Name 
    , a.Activity_Duration 
    , a.Activity_UpdateDate 
    , i.EntityName  as [MPN] 
    , a.Activity_TypeName as [Activity_MDT] 
    , g.Activity_ID 
    , a.Activity_Description 
    , a.ActivityPar_SNa as [ActivitySName] 
    , a.Activity_Order 
    , a.ActivityPar_SID as [ActivitySID] 
from rawViews.MCD_DH_Activities a 
    left join rawViews.MCD_DH_TrainingProgramsBasicData aa 
    on a.Activity_EntityID = aa.TrainingProgramID 
    inner join dh.MCD_DH_Activities g 
    on g.Activity_ID = a.Activity_ID 
    full join rawViews.MCD_DH_ActivityPrerequisites h 
    on h.ActivityID = a.Activity_ID 
    left join dh.MCD_DH_BaseEntities i 
    on a.Activity_EntityID = i.EntityID 
where a.Activity_VersionStatusID = 1 

Hier ist meine zweite Abfrage:

select 
    b.TrainProgramID 
    , c.uid 
    , c.UserLastName 
from dh.MCD_DH_UserTrainProAssoc a 
    inner join rawViews.MCD_DH_TrainProgramsBasicData b 
    on a.TrainProgramID = b.TrainProgramID 
    inner join rawViews.MCD_DH_UBasicData c 
    on a.uid = c.uid 
+0

Haben Sie versucht, JOIN? –

+0

[Schlechte Gewohnheiten zu treten: Tabelle Aliase wie (a, b, c) oder (T1, T2, T3) - Aaron Bertrand] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08 /bad-habits-to-kick-using-table-aliases-like-abc---t1-t2-t3.aspx) – SqlZim

Antwort

2

Ich denke, das ist das, was Sie suchen:

select 
    aa.TrainProgramID 
    , aa.TrainProgram_OrganizationalUnitName 
    , aa.TrainProgramMetaDataTypeName 
    , aa.TrainProgramName 
    , c.uid 
    , c.UserLastName 
    , a.Activity_Name 
    , a.Activity_Duration 
    , a.Activity_UpdateDate 
    , i.EntityName  as [MPN] 
    , a.Activity_TypeName as [Activity_MDT] 
    , g.Activity_ID 
    , a.Activity_Description 
    , a.ActivityPar_SNa as [ActivitySName] 
    , a.Activity_Order 
    , a.ActivityPar_SID as [ActivitySID] 
from rawViews.MCD_DH_Activities a 
    left join rawViews.MCD_DH_TrainingProgramsBasicData aa 
    on a.Activity_EntityID = aa.TrainingProgramID 
    left join dh.MCD_DH_UserTrainProAssoc utpa 
    on aa.TrainProgramID = utpa.TrainProgramID 
    left join rawViews.MCD_DH_UBasicData c 
    on utpa.uid = c.uid 
    inner join dh.MCD_DH_Activities g 
    on g.Activity_ID = a.Activity_ID 
    full join rawViews.MCD_DH_ActivityPrerequisites h 
    on h.ActivityID = a.Activity_ID 
    left join dh.MCD_DH_BaseEntities i 
    on a.Activity_EntityID = i.EntityID 
where a.Activity_VersionStatusID = 1 
+0

Danke! Das macht Sinn. :) – BoyGeorge

+0

@BoyGeorge Glücklich zu helfen! – SqlZim

+0

@SQLZim das Mischen von inneren und äußeren Joins kann zu einigen Überraschungen führen. Die linken Joins vor den inneren Joins werden höchstwahrscheinlich in innere Joins umgewandelt. Da G zu A hinzugefügt wird, ist es am besten, wenn der erste Join in der Abfrage erfolgt. aus einem inneren g verbinden auf g = a aa auf a = aa kommen gelassen uTPA auf aa verbinden links = uTPA c kommen gelassen auf uTPA = c links verbinden i auf a = i FULL beitreten h auf h = a –

Verwandte Themen