【发布时间】:2017-11-08 03:47:43
【问题描述】:
假设表 A 有两列“Type”和“Severity”,表 B 有列“Type”、“Severity_1”、“Severity_2”、“Severity_3”、“Severity_4”。
A.Severity 是一个整数,所有 B.Severity_* 字段都包含描述。
我想查询表 A 的类型和严重性,并从表 B 中返回带有相应描述的第三列。
目前,我正在使用 LINQ,并且在 select 子句中有一组嵌套的 IF 语句。有没有办法投影表 B 或选择每个 {Type, Severity, Severity_*} 记录并合并结果?
【问题讨论】:
-
"Severity_1", "Severity_2", ...听起来像是一个糟糕的数据库设计;结果 if 通常是很多 If 语句来撤消损坏 -
更好的设计是表 B 具有“类型”、“严重性”和“描述”列,并且每个严重性都有一行。
-
@dwilliss 这是另一家公司的产品,不幸的是我无法控制他们的数据库设计。
-
就像 Plutonix 说的,一堆 If 语句。当然,您可以查询每个严重性案例(其中 A.Severity = 1 等)四次,然后连接结果?糟糕的设计会让人头疼。更好的是,如果你/他们可以的话,创建一个视图来扁平化 SQL 端的所有内容。
-
表是否同时加入
A.Type = B.Type和A.Severity = n : Severity_n?