【发布时间】:2014-07-11 00:43:30
【问题描述】:
假设我有一个组织的数据库,该组织可以属于 1 个或多个病房,每个病房可以属于 1 个或多个部门。现在我想要一个查询,显示属于同一病房中同一部门的其他组织。我将查询传递给包含 id 的 varchar,以逗号分隔。然后我有一个拆分这些 id 的函数:
WHERE
ess.SPEAKER_SECTOR_ID IN (SELECT s.item FROM ufn_SplitIntArray(@P_Sectors, ',') s)
AND w.WARD_ID IN (SELECT s.item FROM ufn_SplitIntArray(@P_Wards, ',') s)
问题是,这会返回组织所属的所有部门以及它所在的所有病房。例如:
假设这个组织有以下区/部门:
病房 |部门
59 |艺术与文化
71 |商业
72 |安全和安保组织
例如,这将显示病房 59 和部门 BUSINESS 中的组织,即使当前组织不属于病房 59 中的 BUSINESS 部门,而仅属于病房 71。
编辑: 好吧,数据库非常复杂且不可更改,因为某些旧版 delphi 应用程序显然仍在使用它。我在 ASP.NET 中工作。仅部分相关表格如下:
编辑:让我用这个视觉示例来澄清一下。确实可以为任何组织添加多个病房和部门。此示例组织中添加的区和部门:
现在我希望我的查询返回 other 组织,这些组织既位于同一病房中,又与上述示例组织所在的同一部门中的该病房相同。此时,我的 where 子句返回位于同一部门且分别位于同一病房的组织:
这是不正确的。病房 和 部门都应与显示的其他组织相匹配。例如,只有在 59 区和 59 区的艺术和文化部门的组织。由于示例组织在 71 号病房中有业务,因此现在显示 BUSINESS 59。
【问题讨论】:
-
你能告诉我们你的数据库结构吗?
-
@Arion:提供的数据库结构摘录
-
我一遍又一遍地阅读你的问题......我不明白。您想获得从组织到部门和病房的独特联系吗?我的意思是你的数据库结构基本上告诉我同一个组织可以有多个连接到同一个病房和部门
-
@Arion:我为看起来模棱两可而道歉。希望现在更清楚一点
标签: sql sql-server sql-server-2012 query-optimization