【发布时间】:2017-09-21 19:46:29
【问题描述】:
我需要编写 SQL 来生成包含一个实体到另一个实体的映射的表或视图,其中实体属于同一个表,并且映射条件基于它们的子值。假设我有以下架构:
我需要能够根据以下条件在两个不同的实体 ID(称为 A 和 B)之间创建映射:
链接到实体 A 的人员的 Category.Name 值必须与链接到实体 B 的人员的 Category.Name 值相同(“每个实体的验证名称必须匹配”)
链接到实体 A 的验证必须与链接到实体 B 的验证具有相同的验证值(“两个实体的验证值必须匹配”)
链接到实体 A 的验证的 VerificationType.Name 必须与链接到实体 B 的验证的 VerificationType.Name 相同(“每个实体的验证类型必须匹配”)
最终结果将是这样的表格或视图:
entity_ID_A | entity_ID_B
--------------------------
1 2
3 4
11 10
为简单起见,假设我们不能将多个值映射到 entity_ID_A
在代码中,这可以简单地表示为:
Entity a, b = //do some stuff to get the two different entities
return a.person.name == b.person.name &&
a.verification.verificationValue == b.verificationValue &&
a.verification.verificationType.name == b.verification.verificationType.Name;
我什至不确定在 SQL 中从哪里开始表达这一点,更不用说生成满足此条件的实体 ID 映射表了。在进行任何比较之前,我是否将所有表格连接在一起?任何正确方向的指针将不胜感激
【问题讨论】:
标签: sql oracle select join stored-procedures