Как написать запрос INTERSECT для базы данных Android SQLite - PullRequest
3 голосов
/ 20 марта 2012

Я пытаюсь выполнить запрос к базе данных Android SQLite, используя следующий запрос INTERSECT, но он дает сбой. Два запроса select отлично работают сами по себе, и они определенно дают совпадающий результат, поэтому я не могу понять, почему оператор INTERSECT не будет работать:

SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT tblsyndromes._id, synname" +
"  FROM tblsyndromes JOIN tblsymsynlink ON tblsymsynlink.synId =      tblsyndromes._id" +
" WHERE tblsymsynlink.symId = "+intCondition+" " +
" INTERSECT SELECT tblsyndromes._id, synname FROM tblsyndromes JOIN synconlink" +
" ON synconlink.synId = tblsyndromes._id" +
" WHERE synconlink.conId = "+intCondition2+"", null);

Новый код, который я использую -

String sqlString = "SELECT tblsyndromes._id, tblsyndromes.synname FROM tblsyndromes       JOIN synconlink ON synconlink.synId = tblsyndromes._id WHERE synconlink.conId = 55 INTERSECT SELECT tblsyndromes._id, tblsyndromes.synname FROM tblsyndromes JOIN tblsymsynlink ON tblsymsynlink.synId = tblsyndromes._id WHERE tblsymsynlink.symId = 136";

SQLiteDatabase db = (new DatabaseHelper(this)).getWritableDatabase();

Cursor cursor = db.rawQuery(sqlString,null);

ArrayList<String> mArrayList = new ArrayList<String>();
cursor.moveToFirst();
while(!cursor.isAfterLast()) {
     mArrayList.add(cursor.getString(cursor.getColumnIndex("synname")));
     cursor.moveToNext();
}

Я неоднократно тестировал sql, используя sqlite3, и он работает - оба запроса select работают независимо в Android, но как только я пытаюсь использовать INTERSECT, у меня происходит сбой - теперь я получаю следующую ошибку

Неверный запрос для слота поля 0, -1. numRows = 3, numColumns = 2

1 Ответ

0 голосов
/ 22 марта 2012
public Long insert_todoinfo(String a, String b, String c, String d,
            String e, String f, String g) {
        // TODO Auto-generated method stub
        ContentValues con = new ContentValues();
        con.put("title", a);
        con.put("description", b);
        con.put("category", e);
        con.put("due_date", c);
        con.put("alarm_time", d);
        con.put("alarm_set", f);
        con.put("priority", g);
        con.put("parform", "false");
        return mDb.insert(DATABASE_TABLE_TODO_LIST, null, con);
    }
...