我有3個表,USER
,ENTRY
(對於輸入的產品,不需要創建一個PRODUCT表)和USER_COLLECTION
,這是USER
和ENTRY
之間的表,因爲一個條目可以有多個用戶。如何遍歷具有多個結果的連接表?
基本上是:
用戶= USERID | USER_NAME
輸入= ENTRYID | ENTRY_NAME | ENTRYPRICE | ENTRY_DATE
收集= COLLECTIONID | ENTRYID | USERID
我與整個項目堅持用戶的表。他們可以創建條目(這通常是某種具有價格的產品),並且可以將多個用戶鏈接到某個條目(可以從列表中選擇,因此用戶在整個項目中保持不變)。
因此,舉例來說,我的表是這樣的:
User
--------------------------
user_id | user_name
--------------------------
1 | 'FOO'
2 | 'BAR'
3 | 'FOOBAR'
ENTRY
-----------------------------------------------------------------------
entryid | entry_name | entry_price | entry_date
-----------------------------------------------------------------------
0 | 'Banana' | 2.50 | 12/12/2012
COLLECTION
---------------------------------------
collectionid | entryid | userid
----------------------------------------
0 | 1 | 1
1 | 1 | 2
2 | 1 | 3
我有一個香蕉,以2.50和3用戶鏈接到它,富,酒吧和Foobar的的價格。
現在,我想在我的應用程序中使用它並獲取數據;除了我不知道從哪裏開始。我嘗試選擇條目數據,使用該ID來循環收集數據,但這意味着我打開了兩個遊標,它不起作用。嘗試創建一個連接,但我不能真正使一個很好的,這主要是因爲:
JOIN
---------------------------------------
collectionid | entryname | username
----------------------------------------
0 | Banana | FOO
1 | Banana | BAR
2 | Banana | FOOBAR
我無法通過這個循環,因爲我會在我的Android代碼創建同一條目對象的多個...
希望我明白這一點。
if (cursor2.moveToFirst()) {
do {
Item i = new Item(<GET STUFF FROM CURSOR>);
i.addUser(new Person(<GET STUFF FROM CURSOR>)));
Log.d("TAG", i.getUsersPaying().size() + "");
} while (cursor2.moveToNext());
}
如果我使用這個,我創建項目i的多個實例。他們都是香蕉,而我應該只有1個項目香蕉,並添加了多個用戶。
爲什麼'COLLECTION.collectionId'不增加?它不應該自動增量? –
我的錯誤。現在編輯 – user1810737
您的連接數據看起來像我所期望的。它說Foo,Bar和Foobar有(買了?)香蕉。遊標會依次擊中每一行,然後處理該行。你期望看到什麼? (也許我在這裏丟失了一些東西) –