2013-09-09 1 views
0

Это похоже на самом деле основной запрос, который прекрасно работает на моем рабочем столе, но результаты не упорядочиваются при исполнении на Android:ORDER BY SUM() не работает на Android

SELECT column1, SUM(column2) AS column3 
FROM ftdata WHERE ftdata MATCH 'column1:example' 
GROUP BY column1 
ORDER BY SUM(column2) DESC 
LIMIT 8 

Я также попытался оборачивая во внутренней таблице без толка:

SELECT * FROM(
SELECT column1, SUM(column2) AS column3 
FROM ftdata WHERE ftdata MATCH 'column1:example' 
GROUP BY column1) X 
ORDER BY X.column3 DESC 
LIMIT 8 

Это код, я использую для выполнения запроса в случае, если она помогает:

Cursor c = mDb.rawQuery(sql, null); 
if(c != null && c.moveToFirst()) { 
    do { 
     results.add(c.getString(0)); 
    } 
    while(c.moveToNext()); 
} 
c.close(); 

Я также должен уточнить, что ftdata - это виртуальная таблица, используемая для запросов FTS. Его определение выглядит следующим образом:

CREATE VIRTUAL TABLE ftdata USING fts3(
column1, 
column2 int) 
+0

Что 'results'? Как вы проверяете его заказ? –

+0

'results' является' ArrayList '. Я проверяю его через отладчик, а также выводит его на экран. Я знаю, в каком порядке он должен быть, поскольку я сравниваю его с настольным набором данных. Я начинаю думать, что это потому, что 'freq' является столбцом' int' в моей таблице FTS и обрабатывает его как строку – CodingIntrigue

+0

В ваших запросах вы вообще не используете 'freq'. –

ответ

2

Попробуйте использовать это:

SELECT column1, SUM(column2) AS my_sum 
FROM ftdata WHERE ftdata MATCH 'column1:example' 
GROUP BY column1 
ORDER BY my_sum DESC 
LIMIT 8 
+1

Я уже говорил, что это не работает. Оно делает. Мне просто нужно развернуть свои изменения, когда я проверю. * Facepalm * – CodingIntrigue