我有以下问题,我需要根据其他两个表中给出的规范返回一个表中值的多个差异。我很确定这可以通过在正确的位置进行一些内部连接来完成。我遇到的最大问题是一个事实可能还有两个以上的值需要比较,并且结果应该总是在一行中返回。
应该返回的差异是根据表 C 中的值计算的,应该比较的规范在表 A 中给出。
下面我做了一个情况示例,因为它更容易显示情况和示例返回行。我尝试了很多技巧,但都没有成功,因此我们将不胜感激。
数据库使用 MySQL。
提前致谢!
表 A:
| identifier | type | top_id
-------------------------------------
| aaaa | X |
| bbbb | Y | aaaa
| cccc | Y | aaaa
| dddd | Y | aaaa
表 B:
| identifier | is_base
--------------------------
| bbbb | TRUE
| cccc | FALSE
| dddd | FALSE
表 C:
| identifier | type | sub_type | value
----------------------------------------------
| bbbb | A | Q | 100
| cccc | A | Q | 90
| dddd | A | Q | 80
结果:
| top_id | base | diff1_id | diff1_value | diff2_id | diff2_value
-------------------------------------------------------------------------------------
| aaaa | bbbb | cccc | 10 | dddd | 20