Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql中在单个视图中连接两个视图?_Sql - Fatal编程技术网

如何在sql中在单个视图中连接两个视图?

如何在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

例如,我有两个视图要合并到单个视图中

视图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 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:在我的两个视图中,有不同的列名和不同的值