簡體   English   中英

Android Sqlite內部聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM