【问题标题】:how to join two views in single View in sql?如何在sql中的单个视图中加入两个视图?
【发布时间】:2015-11-06 13:39:59
【问题描述】:

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

视图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

视图2定义为:

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'

如何将它们组合成一个视图 从 View1 中选择 * 从 View2 中选择 *

输出到单个查询中

请帮忙

【问题讨论】:

  • 每个视图中的列是否相同?假设是这样,请使用union...
  • 没有两个视图有不同的列
  • 将它们视为表格并将它们连接到合适的字段中。
  • 要组合视图的结果,您需要具有相同的列。如果没有,您如何将它们结合起来,您的预期结果是什么?如果您针对每个视图发布查询,我们可能会为您提供更多帮助。正如所写,很难提供任何进一步的帮助。
  • @SarfarazAli 您需要提供每个视图中列的更多详细信息以及您期望的输出

标签: sql


【解决方案1】:

如果你想要通用字段,你可以这样做:

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

【讨论】:

  • @CM@K:在我的两个视图中,列名不同,值也不同
【解决方案2】:

如果您有同类列,请使用union。否则在合适的字段上使用Join

SELECT *
FROM view1
INNER JOIN view2 ON view1.id = view2.ref;

需要更多详细信息才能知道要使用哪个联接以及在哪些字段上。

【讨论】:

  • 我在两个视图中都有不同的列名和不同的值,它们彼此不匹配。然后我做什么
  • @SarfarazAli 请显示您的视图的列和数据类型以及您的预期输出,否则我们只是猜测!
  • In view1 Query 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 内连接 DemographicsElement DE on DV.demValueId=DE.demValueRef 内连接 DemographicsElementSet DES 上 DE.demElementId=DES.demElementRef 内连接 DemographicsRecord DR 上 DR.demElementSetGroupRef=DES.demElementSetGroupId 内连接 LoginDetail L on DR.demRecordId=L .demRecordIdRef"
  • 选择 DV.valueId, DV.value,E.ElementId,E.name,ES.ElementSetGroupId,ET.entryId,ET.name 作为 E_Name,ET.SystemDateTime,C.compositionId,C.linkSetRef从 DataValue DV 内连接 DV.valueId 上的元素 E=E.valueRef 内连接 E.ElementId=ES.ElementRef 上的 ElementSet ES.elementSetGroupId=ET.elementSetGroupRef 上的内连接 EntrySet 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'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2021-04-10
相关资源
最近更新 更多