我有3个表ClientVisit,Location和连接表ClientVisitLocation 联接表包含访问位置的历史记录。
3个表的基本连接可以返回父记录或子记录。 如果记录是父级别,则位置表有一列[parentGuid],那么这= 0,否则它是父位置的guid。
将其置于上下文中,存储在clientVisitLocation表中的locationID可以引用Ward或Bed。我希望我的查询返回Ward
我第二次加入了位置表,但是这给了我l2的空列,其中l已经包含病房级别。我希望病房级别的位置出现在同一列中。
-+
| 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 |
+---------+---------+----------+
我希望它返回
{{1}}
我可以在select部分中使用coalesce,但因为这是一个更大的查询中的连接的一部分,它不会给我想要的结果。 我确信它相当简单,但我现在有一个心灵障碍。
答案 0 :(得分:1)
关于日出的一个真正的快速说明是,地点的层次结构是不规则的。病房和床可能在树上有不同的距离,特别是在两个不同的校园之间。此外,有些地方不使用病房,有些使用单位,有些则使用诊所等......
这可能对您的需求有点过分,我创建了一个表函数来查找有关位置的一些其他信息。您可以使用下面的功能并加入您要查找的类型代码。
div#outer{
height: 200px;
width: 200px;
background-color: tomato;
overflow: hidden;
}
div#inner{
height: 100px;
width: 100px;
background-color: lightgrey;
opacity: 1;
transition: all 1000ms;
}
div#outer.hide{
width: 0;
height: 0;
}
div#inner.hide{
opacity: 0;
}
答案 1 :(得分:1)
试试这个:
SELECT
A.visitid,
A.Locn1ID,
CASE
WHEN A.Locn2Name is null THEN A.Locn1Name
ELSE A.Locn2Name
END
FROM (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) as A