Nabend,
folgendes Problem in meinem Programm werden 2 SQL Abfragen druchgeführt welche nachher in der unteren Methode verarbeitet werden. EIne Datenbankabfrage steht schon drin (getWordAnalyse). Aus der 2. Datenbnakabfrage benötige ich aber auch einen Wert der in der for schleife verarbeitet werden soll. Gibt es eine Lösung das ich die 2. Datenbankabfrage einbinde? Also da nachher unter
double weight = Double.parseDouble(objects[2].toString());```
dann
```int Freq = Integer.parseInt(objects[x].toString());```
steht?
```public static String getWeight(String word) {
List<Object[]> dbResult = getWordAnalyse(word);
int counter = 0;
double weights = 0.0;
for (Object[] objects : dbResult) {
int coocFreq = Integer.parseInt(objects[1].toString());
double weight = Double.parseDouble(objects[2].toString());
weights += coocFreq * weight;
counter += coocFreq;
}
double result = weights / counter;
return ergebnisTextErmitteln(result);
}```
Das gesamte Programm...
```public static String getWeight(String word) {
List<Object[]> dbResult = getWordAnalyse(word);
int counter = 0;
double weights = 0.0;
for (Object[] objects : dbResult) {
int coocFreq = Integer.parseInt(objects[1].toString());
double weight = Double.parseDouble(objects[2].toString());
weights += coocFreq * weight;
counter += coocFreq;
}
double result = weights / counter;
return ergebnisTextErmitteln(result);
}
private static List<Object[]> getWordAnalyse(String word) {
return DatabaseAccess
.getSqlStatementResult(
"SELECT coocTable.word, coocFreq, value"
+ " FROM ( "
+ " SELECT word, "
+ " count(DISTINCT sentence.id) AS coocFreq"
+ " FROM "
+ " corpus "
+ " INNER JOIN "
+ " article ON corpus.id = article.corpusId "
+ " INNER JOIN "
+ " sentence ON article.id = sentence.articleId "
+ " INNER JOIN "
+ " term ON sentence.id = term.sentenceId "
+ " WHERE corpus.id = " + currentCorpus.getId()
+ " AND sentence.id IN "
+ " (SELECT sentence.id "
+ " FROM "
+ " sentence "
+ " INNER JOIN "
+ " term ON sentence.id = term.sentenceId "
+ " WHERE word = '" + word + "' "
+ " ) GROUP BY word "
+ " ORDER BY coocFreq DESC) "
+ "AS coocTable "
+ "INNER JOIN sentiws on coocTable.word = sentiws.word");
}
private static List<Object[]> getCorpusStatstic(String corpus) {
return DatabaseAccess.getSqlStatementResult(
"SELECT word, count(DISTINCT sentence.id) AS freq, count(DISTINCT article.id) AS art " +
"FROM " +
" corpus" +
" INNER JOIN" +
" article ON corpus.id = article.corpusId" +
" INNER JOIN" +
" sentence ON article.id = sentence.articleId" +
" INNER JOIN" +
" term ON sentence.id = term.sentenceId " +
"WHERE corpus.id = " + corpus.getId() +
" GROUP BY word " +
"ORDER BY freq DESC;"
);
}```
Ich hoffe ihr könnte mir helfen ich verzweifle.
VIele Grüße,
Tobias