Intersystems Cache编码查询

时间:2014-08-04 08:13:18

标签: sql class hierarchy intersystems-cache intersystems

SELECT Distinct visitid As Visit_ID, 
       AreaId->FacilityID As Facility_ID, 
       visitid-PatientSecondaryNumber As Patient_MRN, 
       visitid->PatientName As Patient_Name, 
       visitid-statustext As visit_Status, 
       visitid->LastVisitTypeID->shortname As visit_Type,
       visitid-LastVisitActivationTime As Last_Visit_Activation,
       (SELECT VisitConversionID->VisitTypeID-shortname 
        FROM qcpr_arf_OC.VisitActivationTime 
        WHERE visitid = qcpr_arf_RG.AreaBedHistoryEventTime.visitid AND 
              VisitConversionID->VisitTypeID-shortname LIKE 'Emergency%' ) AS Last_Visit FROM qcpr_arf_rg.AreaBed INNER JOIN qcpr_arf_RG.AreaBedHistoryEventTime ON     
       qcpr_arf_rg.AreaBed.AreaBedID = qcpr_arf_RG.AreaBedHistoryEventTime.AreaBedID 
WHERE AreaBedHistoryEventTimeSubID LIKE 'Ç910%' AND visitid <> ''

您好以上问题已被上一位员工保留,我试图找出&#34; - &gt;&#34;意味着任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

扩展@ Ben的答案,并在此主题中包含更多信息,而不仅仅是他提供的外部链接。

- &GT; syntax是一种Cache SQL简写,表示在属性是对另一个表的引用的情况下隐式LEFT OUTER JOIN。

作为示例,您的SQL查询在SELECT子句中包含以下列:     AreaId-&gt; FacilityID As Facility_ID 此表达式与使用ON {table.ROWID} = AreaID的AreaId引用的表的LEFT OUTER JOIN等效,如果存在这样的AreaId则返回FacilityID,否则返回NULL。

乍一看,语法可能没有多大意义,但它可以减少查询中的SQL数量。也就是说,如果你在visitid上明确地加入JOIN,这个查询可能会更容易理解。

我将@ Ben的链接包含在InterSystems文档中:http://docs.intersystems.com/cache20141/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_specialfeatures#GSQL_specialfeatures_impjoin 文档的重点从更OO的角度描述了该功能的行为,并提供了一些基本的查询重写来说明该功能。

答案 1 :(得分:0)