Takie szybkie pytanie, na które aż nie opłaca się zakładać nowego tematu. Mamy zapytanie SQL:
String sql
= "SELECT " + W_COLUMN_WORD
+ " FROM " + TABLE_WORDS
+ " WHERE " + W_COLUMN_ID
+ " IN (SELECT " + C_COLUMN_WORDS_ID
+ " FROM " + TABLE_CODES
+ " WHERE " + C_COLUMN_CODE
+ " = " + userCode
+ ");";
SELECT word FROM words_table WHERE id IN (SELECT wordsID FROM codes_table WHERE code = 123);
1. Dlaczego to nigdy niczego nie zwraca? - gdy robię zapytania osobno i ręcznie wstawiam odpowiednią wartość w WHERE .. IN to działa i są zwracane odpowiednie słowa
2. Czy da się to zapisać lepiej?
Tabele wyglądają tak:
words_table: id, word ---> 1,"test" | 2,"php" | 3,"tekst"
codes_table: wordsID, code ---> "'1','3'", 123 | "'2'", 245
W pierwszej trzymamy id i słowo( text ), w drugiej text kolejnych id z tabeli pierwszej oraz pewien specjalny kod.
Baza danych to SQLite. Stąd między innymi konieczność użycia kolumny typu text do trzymania tablicy id.