我正在研究一些关键数据检索报告任务并发现一些困难 继续。基本上,它属于医疗领域,整个数据分布在 几个表我无法改变数据库表设计的架构。为了 完成我的报告,我需要以下步骤:
1- divide the whole report to several parts, for each parts retrieve data by using
several joins. (like for part A can be retrieved by this:
select a1.field1, a2.field2 from a1 left join a2 on a1.fieldA= a2.fieldA ) then I can
got all the data from part A.
2- the same things happened for part B
select b1.field1, b2.field2 from b1 left join b2 on b1.fieldB= b2.fieldB, then I also
get all the data from part B.
3- same case for part C, part D.....and so on.
我划分它们的原因是,对于每个部分,我需要有超过8个连接(医疗数据总是复杂的)所以我无法在一个连接中完成所有这些连接(超过50个连接,这是不可能的完成...)
之后,我运行我的Spring Batch程序,将来自A部分的所有数据和部分b,部分c ...中的数据作为我的最终报告表插入到一个表中。问题不是每个部分都有相同的行数,这意味着部分A可能返回10行,而部分b可能返回20行。由于每个部分的时间条件相同(1天)并且无法更改,因此只是想知道如何以最小的开销将所有这些不同的数据部分存储到一个表中。我不想要多次重复,谢谢你的帮助。
雷
答案 0 :(得分:0)
在我看来,你需要的是加入“来自A部分的数据”,“来自B部分的数据”和& “来自C部分的数据”。让我们称他们为da,db& DC。 da / b / c中的num行是完全不同的。但是当你试图将它们全部放在一张表中时,显然它们之间存在某种关系。如果没有对这种关系的更好描述,就不可能提供更具体的答案。所以我只会写下你可能已经知道的想法,但无论如何......
最简单的方法是在更高级别[外部]查询中加入3 [内部]查询的结果。
select j.x, j.y, j.z
from (
' da join db join dc
) j;
如果这不可能(由于你说的连接太多),那么试试其中一个:
PS:如果你想在某些数据上运行报告(许多/频繁/大尺寸),那么应该适当地设计这些数据,否则你将来会遇到麻烦。
如果您想要更具体的内容,请发布da / b / c之间的关系。