Hallo!
Also zum leichteren Verständnis hier mal ein Auszug des DB-Designs:
leichter verständlich wären ein paar Beispieldaten und die richtigen Tabellen- und Spaltennamen, damit man sich darunter etwas vorstellen kann ...
... statt bis zur Unkenntlichkeit und Unverständlichkeit verstümmelter Angaben.
Okay, ich dachte eigentlich, dass es verkürzt einfacher zu verstehen wäre als wenn ich die Gesamtstruktur hier einfach reinklatsche.
Aber dann mal das vollständige DB-Design:
---------------
Groups
---------------
pk GroupId
GroupName
Description
Size
---------------
---------------
Question
---------------
pk QuestionId
Description
fk1 Group1
fk2 Group2
---------------
---------------
Study
---------------
pk StudyId
pubmedId
Platform
---------------
---------------
M
---------------
pk MId
fk1 StudyId
fk2 QuestionId
fk3 EntrezId
M
---------------
---------------
p
---------------
pk pId
fk1 StudyId
fk2 QuestionId
fk3 EntrezId
p
q
---------------
---------------
Meta
---------------
pk MetaId
fk EntrezId
aM
aMW
p
q
---------------
---------------
Entrez
---------------
pk EntrezId
fk Chromosome
---------------
---------------
Chromosome
---------------
pk Chromosome
---------------
---------------
GSymbol
---------------
pk SymbolId
fk EntrezId
GSymbol
---------------
Ausgabe:
Etwa so wie hier (das war ein Demo wo die dahinterliegende Datenbankstruktur noch nicht ganz so generisch war und es daher einfach mit 2 Joins in einem einzigen SQL-Statement zu lösen war):
...
In einer solchen Datenbank-Tabelle werden zu Beginn bis zu etwa 20.000 Einträge stehen, was sich aber später noch stark erweitern wird. Daher auch meine Unsicherheit bezüglich der Lösungsmöglichkeit mit Joins oder Unterabfragen usw. Das Ganze soll ja halbwegs performant sein. Joins wären da wohl besser. Ich bin mir unsicher, wie das mit den Joins für den mittleren Bereich der Tabelle (S1 bis S27) funktionieren kann. Das wird dann wohl ein recht langes Statement ...
Ich weiß nicht, ob es jetzt verständlicher ist, ich hoffe es. Hatte mich eigentlich bemüht, es abzukürzen um nur das relevante Teilproblem darzustellen. Ist mir wohl nicht richtig gelungen.
Liebe Grüße
sunny