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