0
我有3个表:SQLite的创建动态表(或查看?)
Table.Keys,Table.Tags,Table.Values
Table.Keys create table语句:
createTableStatement = "CREATE TABLE " + Tables.KEYS + "("
+ KeysColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ KeysColumns.KEY + " TEXT NOT NULL,"
+ "UNIQUE ("
+ KeysColumns.KEY
+ ") ON CONFLICT IGNORE"
+ ");";
execSQL(sqLiteDatabase, createTableStatement);
Table.Tags create table语句:
createTableStatement = "CREATE TABLE " + Tables.TAGS + " ("
+ TagsColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ TagsColumns.NAME + " TEXT NOT NULL,"
+ "UNIQUE ("
+ TagsColumns.NAME
+ ") ON CONFLICT IGNORE"
+ ");";
execSQL(sqLiteDatabase, createTableStatement);
Table.Value create table语句:
createTableStatement = "CREATE TABLE " + Tables.VALUES + " ("
+ ValuesColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ValuesColumns.KEY_ID + " TEXT NOT NULL,"
+ ValuesColumns.TAG_ID + " TEXT NOT NULL,"
+ ValuesColumns.VALUE + " TEXT NOT NULL,"
+ "UNIQUE ("
+ ValuesColumns.KEY_ID + ", " + ValuesColumns.TAG_ID
+ ") ON CONFLICT REPLACE"
+ ");";
execSQL(sqLiteDatabase, createTableStatement);
如果我做了以下连接:
Tables.KEYS
+ " JOIN " + Tables.VALUES
+ " ON " + Values.KEY_ID + " = " + Keys.column(Keys._ID)
+ " JOIN " + Tables.TAGS
+ " ON " + Values.TAG_ID + " = " + Tags.column(Tags._ID);
我得到的当然是重复的行,因为结果是
KEY | TAG | VALUE
=================
| |
我想什么来完成的查询,并得到一个游标从表或视图没有重复的行与以下架构:
KEY | TAG 1 | TAG 2 | ... | TAG n
=================================
| | | |
并非所有键必须具有每个标签的值,但是所有键CAN都具有值。
我不知道如何做到这一点。我甚至不知道从哪里开始。
在我创建了存储一些变量值,我知道会一直存在另一个表其间。
但我觉得这是低效的,因为在任何时候我能有新的变量值“N”数字这就是为什么我想能够创建我列出的模式的视图或表。
所以基本上for循环内部选择? (我会明天测试并更新) – clockwerk 2014-12-06 10:36:40
完美运作。谢谢。 – clockwerk 2014-12-08 17:44:25