我正试图搞定这个
我有2个表 - 单词表(ID,NAME,TRANSLATION)和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的单词 但这不能正常工作。
我应该改变什么? 如果你需要代码注释的另一部分,我会添加。
答案 0 :(得分:1)
您需要两次加入单词表:
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 = ?;