![](/img/trans.png)
[英]How to do inner join in SQLite with multiple database helpers classes in android
[英]Android Sqlite Inner Join
我試圖得到這個
我有2個表-單詞表(ID,名稱,翻譯)和WordSynonym表(synonym_id1,synonym_id2)。
我所有的單詞都進入第一個表,並且在需要時通過第二個表在單詞之間建立連接。
現在,我需要通過特定的ID來獲取所有同義詞的方法。
為此,我已經嘗試過了。
@Override
public ArrayList<Word> getAllSynonymsByWord(int id) {
ArrayList<Word> synonyms = new ArrayList<>();
Cursor c = database.rawQuery("select id, word, translation from " + WordsTable.TABLE_NAME + " inner join " + WordSynonymTable.TABLE_NAME + " on " + WordSynonymTable.COLUMN_WORD_ID + " = " + id, null);
c.moveToFirst();
while (!c.isAfterLast()) {
Word s = new Word();
s.setId(c.getInt(0));
s.setName(c.getString(1));
s.setTranslation(c.getString(2));
synonyms.add(s);
c.moveToNext();
}
c.close();
return synonyms;
}
參數ID是我需要的單詞的ID(圖片中的ID = 1),例如,我想返回ID = 2和ID = 3的單詞,但這不能正常工作。
我應該改變什么? 如果您需要代碼注釋的另一部分,我會添加。
您需要兩次連接單詞表:
SELECT W2.ID,
W2.Name,
W2.Translation
FROM Words
JOIN WordSynonym ON Words.ID = WordSynonym.Synonym_ID1
JOIN Words AS W2 ON WordSynonym.Synonym_ID2 = W2.ID
WHERE Words.ID = ?;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.