Hallo Forumsgemeinschaft,
es wäre schön, wenn mir jemand bei dem Zusammenbau eines SQL-Statements helfen könnte.
Zum Verständnis: Es gibt Berichte. Ein Bericht kann mehrere Themen haben. Ein Thema kann mehrere Einträge haben. Und ein Eintrag hat eine Relevanz.
Ich habe eine Tabelle eintraege, die die folgenden (, relevanten) Spalten hat:
oid (int), berichtID(int), datum (date), relevanz (tinyint) und thema (varchar).
Jetzt will ich in der Tabelle berichte eine Spalte relevanz füllen. Und zwar ist die Relevanz eines Berichts die höchste Relevanz der letzten für jedes Thema eingegebenen Einträge.
Um den neuesten Eintrag zu bestimmen braucht man Datum und oid. (Mehrere Einträge für ein Thema und Bericht am selben Tag -> nimm höchste oid.)
Bin in SQL nicht gut und habe mich einige Stunden mit geschachtelten selects, maxs und group bys rumgeschlagen und befürchte mittlerweile, dass ich es ohne fremde Hilfe einfach nicht innerhalb der nächsten Tage hinbekomme.
Ich wollte es mit java machen, aber das würde SEHR lange dauern. Es sind ca 70000 Berichte und ca 350 Themen. Aber es sah ungefähr so aus (PSEUDOPseudocode):
berichte = db.getBerichte;
themen = db.getThemen;
berichtRelevanz[berichte.length];
for(alle Berichte){
themenrelevanz[];
for(alle themen){
lastEintrag = db.getLastEintragFürBerichtUndThemaOrderBy(datum, oid);
themenrelevanz[thema] = lastEintrag.getRelevanz();
}
berichtRelevanz[bericht] = max(themenRelevanz[]);
}
Das ewige hin und her über jdbc dauert einfach viel zu lange. Ich hoffe sehr, dass mir hier jemand helfen kann.
Danke schon mal für´s Lesen und mfG,
Markus
P.s. Schönen Feierabend
es wäre schön, wenn mir jemand bei dem Zusammenbau eines SQL-Statements helfen könnte.
Zum Verständnis: Es gibt Berichte. Ein Bericht kann mehrere Themen haben. Ein Thema kann mehrere Einträge haben. Und ein Eintrag hat eine Relevanz.
Ich habe eine Tabelle eintraege, die die folgenden (, relevanten) Spalten hat:
oid (int), berichtID(int), datum (date), relevanz (tinyint) und thema (varchar).
Jetzt will ich in der Tabelle berichte eine Spalte relevanz füllen. Und zwar ist die Relevanz eines Berichts die höchste Relevanz der letzten für jedes Thema eingegebenen Einträge.
Um den neuesten Eintrag zu bestimmen braucht man Datum und oid. (Mehrere Einträge für ein Thema und Bericht am selben Tag -> nimm höchste oid.)
Bin in SQL nicht gut und habe mich einige Stunden mit geschachtelten selects, maxs und group bys rumgeschlagen und befürchte mittlerweile, dass ich es ohne fremde Hilfe einfach nicht innerhalb der nächsten Tage hinbekomme.
Ich wollte es mit java machen, aber das würde SEHR lange dauern. Es sind ca 70000 Berichte und ca 350 Themen. Aber es sah ungefähr so aus (PSEUDOPseudocode):
berichte = db.getBerichte;
themen = db.getThemen;
berichtRelevanz[berichte.length];
for(alle Berichte){
themenrelevanz[];
for(alle themen){
lastEintrag = db.getLastEintragFürBerichtUndThemaOrderBy(datum, oid);
themenrelevanz[thema] = lastEintrag.getRelevanz();
}
berichtRelevanz[bericht] = max(themenRelevanz[]);
}
Das ewige hin und her über jdbc dauert einfach viel zu lange. Ich hoffe sehr, dass mir hier jemand helfen kann.
Danke schon mal für´s Lesen und mfG,
Markus
P.s. Schönen Feierabend