zusammenfasst Ich arbeite an einem Projekt mit Content Provider für DB.
Ich kann alle Zeilen mithilfe der unten genannten Abfrage abrufen.
Mein Problem ist, ich möchte eine Spalte für alle abgerufenen Zeilen zusammenfassen.Content Resolver - Wie man einen Spaltenwert für alle Zeilen mit der Abfrage
Ich Abfrage wie:
String query = WorkTable.ENTRY_TIME + " = ?"
String projection = "new String[]{WorkoutLogTable.STEPS}";
Cursor cursor = getContentResolver()
.query(
LogProvider.WORK_LOG,
projection,
query,
new String[]{dateString},
null
);
ich die Summe von WorkoutLogTable.STEPS
wollen. Die Projektion benötigt string[]
als Parameter. Wie kann ich den STEPS-Wert zusammenfassen?
bearbeiten
benutzte ich einen Vorsprung:
String projection = new String[]{"sum(WorkoutLogTable.STEPS}) as total"};
Aber es funktioniert auch nicht.
Lösung:
ich wurde, indem sie den gesamten Teil als String einen Fehler machen.
So habe ich so gelöst:
String projection = new String[]{"sum(steps) as total"}; // steps is my column name and I was fetching it by WorkoutLogTable.STEPS which was wrong
Oder eine andere Lösung kann mit Dynamic-String (aus cricket_007
Antwort)
hat Wenn Sie alle Zeilen bekommen, könnte man nicht einfach die Spaltensumme von Java? –
Das kann ich wiederholen Cursor, aber es ist gut, wenn ich direkte Summe aus Abfrage. Weil es mehrere Zeilen geben kann und ich nicht über zu viele Zeilen iterieren möchte. – Pankaj
Die "SUM" -Funktion würde auch alle Zeilen der Datenbank durchlaufen, aber ... Anyways, Sie könnten versuchen, Ihre Projektion '" sum ("+ WorkoutLogTable.STEPS +") als total "' zu machen. Java-Syntax innerhalb einer SQL-Anweisung ist nicht sinnvoll. –