Ich versuche, dieseAndroid SQLite Inner Join
Ich habe 2 Tabellen zu erhalten - Wörter Tabelle (ID, Name, TRANSLATION) und WordSynonym Tabelle (synonym_id1, synonym_id2).
Alle meine Wörter gehen in die erste Tabelle, und wenn ich brauche, erstelle ich eine Verbindung zwischen Wörtern über die zweite Tabelle.
Jetzt muss ich Methode machen, um alle Synonyme durch spezifische ID zu erhalten.
Dafür habe ich das versucht.
@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;
}
Parameter ID ist id des Wortes I (id = 1 in der Abbildung) müssen Ich mag Worte zurück mit id = 2 und id = 3 zum Beispiel aber das ist nicht richtig funktioniert.
Was soll ich ändern? Wenn Sie einen anderen Teil des Code Kommentar benötigen und ich werde hinzufügen.
Okaay, aber wo verwende ich Parameter-ID von Methode und ich denke, W2 und Wörter sollten gleich sein. –
Ich habe den letzten Teil geändert - WHERE words.id = id (id - Parameter) und es funktioniert, danke –