Запрос данных из базы данных с условием - PullRequest
0 голосов
/ 12 февраля 2011

это моя языковая таблица

/*
         * initialValues in Languages( 
         * KEY_LANG_ID, 
         * KEY_LANG, \\ language name
         * KEY_ACT) \\ 0= not active, 1= active
         */
        ContentValues initialValues3 = new ContentValues();
        initialValues3.put(KEY_LANG, "English");
        initialValues3.put(KEY_ACT, "1");
        db.insert(LANGS_TABLE, null, initialValues3);
        initialValues3.put(KEY_LANG, "German");
        initialValues3.put(KEY_ACT, "1");
        db.insert(LANGS_TABLE, null, initialValues3);
        initialValues3.put(KEY_LANG, "Spain");
        initialValues3.put(KEY_ACT, "0");
        db.insert(LANGS_TABLE, null, initialValues3);
        initialValues3.put(KEY_LANG, "Italy");
        initialValues3.put(KEY_ACT, "0");
        db.insert(LANGS_TABLE, null, initialValues3);
        initialValues3.put(KEY_LANG, "China");
        initialValues3.put(KEY_ACT, "0");
        db.insert(LANGS_TABLE, null, initialValues3);

это моя таблица предложений

/*initialValues in Sentences(
 * KEY_SEN_ID,
 * KEY_SEN_ID_TH_SEN,
 * KEY_SEN_ID_LANG,
 * KEY_SEN,
 * KEY_SEN_READING,
 * KEY_ACT_VOL)
* */

Я хочу отображать предложения в моем списке и предложение должно проверять KEY_ACT из языковой таблицы, если KEY_ACT= 1, тогда предложение показа сверху в виде списка должно иметь только предложение на английском и немецком языках, поэтому я пытаюсь выполнить запрос, подобный этому

public Cursor getSen_List(long id_thsen ) {
    String strTmp = "select "
        +SENS_TABLE+"."+KEY_SEN_ID+","
        +SENS_TABLE+"."+KEY_SEN_ID_TH_SEN+","
        +SENS_TABLE+"."+KEY_SEN_ID_LANG+","
        +SENS_TABLE+"."+KEY_SEN+","
        +SENS_TABLE+"."+KEY_SEN_READING+","
        +SENS_TABLE+"."+KEY_ACT_VOL+","
        +LANGS_TABLE+"."+KEY_LANG
        +" from "+SENS_TABLE+ ","+LANGS_TABLE
        +" where "+SENS_TABLE+"."+KEY_SEN_ID_TH_SEN + "=" + id_thsen+ " and " 
        +SENS_TABLE+"."+KEY_LANG_ID+"=(select "
                                    +LANGS_TABLE+"."+KEY_LANG_ID
                                    +" from "+LANGS_TABLE
                                    +" where "+LANGS_TABLE+"."+KEY_ACT+"=1)";
        return db.rawQuery(strTmp,null);
 }

, но в результате мы показываем только одно и то же английское предложение в течение 5 раз

У кого-нибудь есть идеи?

пожалуйста, помогите .....

1 Ответ

0 голосов
/ 13 февраля 2011

Я не использовал ContentValues раньше, но похоже, что, поскольку вы снова и снова используете один и тот же объект, вы продолжаете вставлять одни и те же значения:

ContentValues initialValues3 = new ContentValues();
initialValues3.put(KEY_LANG, "English");
initialValues3.put(KEY_ACT, "1");
db.insert(LANGS_TABLE, null, initialValues3);
/* ok so far, initialValues3 now contains the "English" entry */
initialValues3.put(KEY_LANG, "German");
initialValues3.put(KEY_ACT, "1");
/* initialValues3 now has both the "English" entry and the "German" one */
db.insert(LANGS_TABLE, null, initialValues3);
/* the "English" entry has now been added twice, and the "German" one once */
...etc

Я думаю, вы можете звонить initialValues3.clear() после каждой вставки.

Что касается остальной части запроса, вы используете столбец KEY_SEN_ID_TH_SEN, для которого вы не предоставили нам никаких данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...