如何在sql中在单个视图中连接两个视图?
例如,我有两个视图要合并到单个视图中 视图1定义为:如何在sql中在单个视图中连接两个视图?,sql,Sql,例如,我有两个视图要合并到单个视图中 视图1定义为: CREATE VIEW view1 AS select DV.demValueId,DV.value,DE.demElementId,DE.name, DES.demElementSetGroupId,DR.demRecordId,DR.name as Role, DR.demClusterSetGroupRef,L.EmailId from DemographicsDataValue DV inner joi
CREATE VIEW view1 AS
select DV.demValueId,DV.value,DE.demElementId,DE.name,
DES.demElementSetGroupId,DR.demRecordId,DR.name as Role,
DR.demClusterSetGroupRef,L.EmailId
from DemographicsDataValue DV
inner join DemographicsElement DE
on DV.demValueId=DE.demValueRef
inner join DemographicsElementSet DES
on DE.demElementId=DES.demElementRef
inner join DemographicsRecord DR
on DR.demElementSetGroupRef=DES.demElementSetGroupId
inner join LoginDetail L
on DR.demRecordId=L.demRecordIdRef
CREATE VIEW view2
AS
select DV.valueId, DV.value,E.ElementId,E.name,
ES.ElementSetGroupId,ET.entryId,ET.name as E_Name,
ET.SystemDateTime,C.compositionId,C.linkSetRef
from DataValue DV
inner join Element E
on DV.valueId=E.valueRef
inner join ElementSet ES
on E.ElementId=ES.ElementRef
inner join Entry ET
on ES.elementSetGroupId=ET.elementSetGroupRef
inner join EntrySet ESG
on ESG.entryRef=ET.entryId
inner Join Section S
on s.entrySetGroupRef=ESG.entrySetGroupId
inner join SectionSet SS
on SS.sectionRef=S.sectionId
where S.name='Appointment'
视图2定义为:
CREATE VIEW view1 AS
select DV.demValueId,DV.value,DE.demElementId,DE.name,
DES.demElementSetGroupId,DR.demRecordId,DR.name as Role,
DR.demClusterSetGroupRef,L.EmailId
from DemographicsDataValue DV
inner join DemographicsElement DE
on DV.demValueId=DE.demValueRef
inner join DemographicsElementSet DES
on DE.demElementId=DES.demElementRef
inner join DemographicsRecord DR
on DR.demElementSetGroupRef=DES.demElementSetGroupId
inner join LoginDetail L
on DR.demRecordId=L.demRecordIdRef
CREATE VIEW view2
AS
select DV.valueId, DV.value,E.ElementId,E.name,
ES.ElementSetGroupId,ET.entryId,ET.name as E_Name,
ET.SystemDateTime,C.compositionId,C.linkSetRef
from DataValue DV
inner join Element E
on DV.valueId=E.valueRef
inner join ElementSet ES
on E.ElementId=ES.ElementRef
inner join Entry ET
on ES.elementSetGroupId=ET.elementSetGroupRef
inner join EntrySet ESG
on ESG.entryRef=ET.entryId
inner Join Section S
on s.entrySetGroupRef=ESG.entrySetGroupId
inner join SectionSet SS
on SS.sectionRef=S.sectionId
where S.name='Appointment'
如何将它们合并到单个视图中
从视图1中选择*
从视图2中选择*
输出到单个查询
如果有同构列,请帮助使用
union
。否则,在适当的字段上使用Join
SELECT *
FROM view1
INNER JOIN view2 ON view1.id = view2.ref;
需要更多详细信息来了解要使用的连接以及在哪些字段上使用连接。如果需要公共字段,可以执行以下操作:
select * FROM View1
inner join View2 -- or you can do a left join here
on View1.Column = View2.Column -- and ... add more if needed
如果两者的表结构相同,并且您不关心重复项,那么您可以执行一个union all
如果您关心重复项,那么union
select * from View1
union all
select * from View2
每个视图中的列是否相同?假设是这样,请使用
union
…没有两个视图都有不同的列将它们视为表并在适当的字段上联接。要组合视图的结果,需要具有相同的列。如果没有,你如何将它们结合起来,你的预期结果是什么?如果您发布每个视图的查询,我们可能会为您提供更多帮助。如文所述,很难提供任何进一步的帮助。@SarfarazAli您需要提供每个视图中列的更多详细信息以及所需的输出。我在两个视图中有不同的列名和不同的值,但它们彼此不匹配。那么do@SarfarazAli请显示视图的列和数据类型以及预期输出,否则我们只是猜测!在view1中查询为“选择DV.devalueId、DV.value、DE.demElementId、DE.name、DES.demElementSetGroupId、DR.demRecordId、DR.name作为角色,DR.demClusterSetGroupRef,demValueId=DE.demValueRef内部连接统计设置DE上的demValueId=DE.demValueRef内部连接统计设置DES上的demElementId=DES.demElementRef内部连接统计记录DR.demElementSetGroupRef上的DR.demElementSetGroupRef=DES.demElementSetGroupId内部连接登录详细信息“选择DV.valueId、DV.value、E.ElementId、E.name、ES.ElementSetGroupId、ET.entryId、ET.name作为E_name、ET.SystemDateTime、C.compositionId,C.linkSetRef来自DV上的DataValue DV内部联接元素E.valueId=E.valueRef内部联接元素E.ElementId=ES.ElementRef内部联接条目ET on ES.elementSetGroupId=ET.elementSetGroupRef内部联接条目ESG on ESG.entryRef=ET.entryId内部联接节S on S.entrySetGroupRef=ESG.entrySetGroupId内部联接节Set SS onSS.sectionRef=S.sectionId,其中S.name='约会'@CM@K:在我的两个视图中,有不同的列名和不同的值