我有3个表ClientVisit,Location和连接表ClientVisitLocation 连接表包含访问位置的历史记录。sql连接父记录
3个表的基本连接可以返回父记录或子记录。 如果记录是父级别,则位置表有一个[parentGuid]列,那么this = 0,否则它是父级位置的guid。
要将它放到上下文中,存储在clientVisitLocation表中的locationID可引用病房或病床。我想我的查询返回病房
我已经第二次加入位置表,但是这给了我空列l2,其中我已经包含了病房级别。我想让病房级别的位置出现在同一列中。
Select cvl.*, l2.* from
cv3clientvisit cv
inner join CV3ClientVisitLocation cvl on cv.guid = cvl.clientvisitguid
inner join cv3Location l on CVl.locationguid = l.guid
left join cv3location l2 on l.locngrpguid = l2.guid
回报
-+
| visitid | Locn1ID | Locn1Name | Locn1parent | locn2ID | Locn2Name | Locn2Parent | |
+---------+---------+---------------+-------------+---------+-----------+-------------+--+
| 1 | 1 | ward F - bed2 | 1234 | 1234 | WardF | NULL | |
| 1 | 2 | ward F - bed4 | 1234 | 1234 | WardF | NULL | |
| 1 | 3 | Ward B | 0 | NULL | NULL | NULL | |
+---------+---------+---------------+-------------+---------+-----------+-------------+--+
我希望它返回
+---------+---------+----------+
| visitid | Locn1ID | LocnName |
+---------+---------+----------+
| 1 | 1 | Ward F |
| 1 | 2 | Ward F |
| 1 | 3 | Ward B |
+---------+---------+----------+
我可以在选择部分使用COALESCE,但因为这是在一个较大的查询难道不联接部分给我想要的结果。 我敢肯定,它相当简单,但我现在已经有了一个思维模块。
你起诉的Allscripts SunriseXA?位置表具有不齐整的层次结构。你可能不得不比目前的更多一点 –
我确实,我使用的parentguid列实际上是LocnGrpGuid列,但对于不知道数据库的人来说它是相同的东西,实际的parentguid可以引用一个海湾。那么我将不得不第三次加入地点表。 – pancho018
你如何区分病房和病床?有没有一个有你想要的价值的领域? – Beth