我有一系列数据库表需要从顶部开始连接在一起,并减少从表中选择的点数。但是在最后一步,我需要扩展最后一个表来满足大表中的点数。这是示例
分析物
Analyte_Index,Analyte_Name ...... 1,'dCMP'
analytefolders
Analyte_Index , Folder_Index ...
1 , 1
文件夹
Folder_Index, Folder_Path ...
1 , 'c:\temp'
文件
File_Index, Folder_Index, File_Name ...
1 , 1 , 'test.dat'
峰
Peak_Index, File_Index, Folder_Index, Cluster_Index ...
1 , 1 , 1 , 1
2 , 1 , 1 , 1
3 , 1 , 1 , 2
4 , 1 , 1 , 3
5 , 1 , 1 , 3
6 , 1 , 1 , 4
簇
Cluster_Index ...
1
2
3
峰值表具有大块表,并且簇内可以有许多峰。因此,所有其他表减少了从峰值表中选择的点数,这非常有效。选择之后,如果我不在群集中包含连接,则有大约9,000,000个点。
这是我的查询
select peaks.Peak_Index, peaks.Cluster_Index, peaks.P_maxAmplitude, peaks.P_averageAmplitude, clusters.C_averageAmplitude
from peaks
join files
on files.File_Index = peaks.File_Index
join folders
on folders.Folder_Index = files.Folder_Index
join analytefolders
on analytefolders.Folder_Index = folders.Folder_Index
join analytes
on analytes.Analyte_Index = analytefolders.Analyte_Index
join clusters
on clusters.Cluster_Index=peaks.Peak_Index
where analytes.Analyte_Name='dCMP'
通过群集连接,返回的行数减少到~1,000,000(群集数)。我需要扩展集群中的数据以匹配峰值数量。我已经尝试了所有我能想到的连接并改变了连接的顺序,但这超出了我有限的SQL技能。
答案 0 :(得分:1)
您的上一次加入应为on clusters.Cluster_Index=peaks.Cluster_Index