0

さて、私はこのようなソースを持っています

public List<SearchRecord> getResult() {
        List<SearchRecord> searchResult = new ArrayList<SearchRecord>();
        String query = "SELECT " + A + ", " + B+ ", " + C
                + " FROM " + TABLE_A+ " UNION ALL SELECT " + A+ ", "
                + B+ ", " + C+ " FROM " + TABLE_B               + " UNION ALL SELECT " + A+ ", " + B+ ", "
                + C+ " FROM " + TABLE_C + " UNION ALL SELECT "
                + A+ ", " + B+ ", " + C+ " FROM "
                + TABLE_D;
        Cursor cursor = mDatabase.rawQuery(query, null);
        if (cursor != null) {
            cursor.moveToFirst();
            do {
                SearchRecord sr = new SearchRecord();
                sr.setRecordA(cursor.getString(0));
                sr.setRecordB(cursor.getString(1));
                sr.setRecordC(cursor.getString(2));
                searchResult.add(sr);
            } while (cursor.moveToNext());
            return searchResult;
        }
        return null;
    }

このコードを使用すると、同じ列名を持つ複数のテーブルからレコードを取得し、結果を List オブジェクトに格納できます。しかし、このレコードが属しているテーブルを見つけるにはどうすればよいですか? TABLE_A、TABLE_B、TABLE_C、またはその他からのものですか

4

1 に答える 1

1

SQL によると、いいえ、3 セットの行を結合して同じ方法で操作しているため、各レコードはその起源によって区別できません。

もちろん、次のようなこともできます

String query = "SELECT 'TABLE_A', " + A + ", " + B+ ", " + C
            + " FROM " + TABLE_A+ " UNION ALL SELECT 'TABLE_B' " + A+ ", "
            + B+ ", " + C+ " FROM " + TABLE_B 
            + " UNION ALL SELECT 'TABLE_C', " + A+ ", " + B+ ", "
            + C+ " FROM " + TABLE_C + " UNION ALL SELECT 'TABLE_D', "
            + A+ ", " + B+ ", " + C+ " FROM "
            + TABLE_D;

:-)

于 2013-06-18T08:47:32.597 に答える