Получить стол на лету с sqlite - PullRequest
1 голос
/ 02 июля 2010

У меня есть код, который отображает список элементов на основе пользовательского адаптера. Для отображения содержимого таблицы нет проблем, но когда мне нужно добавить ссылку на многие таблицы, это другое дело. На мой взгляд, возможны два решения:

1) Запрос к базе данных внутри setViewValue (не слишком много изучал эту возможность) или же 2) Найти способ динамически связать столбец с другими моими таблицами

(решение для обоих приветствуется)

У меня есть главная таблица, где столбец с именем slug является ссылкой на другие таблицы. Эти другие таблицы содержат некоторые данные, которые я хотел бы посчитать.

Получив запрос, я использую SimpleCursorAdapter для отображения красивого списка в Android (например, 1024 (2 ссылки), 2048 (3 ссылки) ...).

Я думаю, что маленькая схема, вероятно, лучше моего объяснения.

Table: A
-----------------------
_id    | slug | value |
-----------------------
1      | a_a  | 1024  |
2      | g_z  | 2048  |
-----------------------


Table: mytable_a_a
----------------
_id    | value |
----------------
1      | xxx   |
2      | yyy   |
----------------

Table: mytable_g_z
----------------
_id    | value |
----------------
1      | xxx   |
2      | yyy   |
3      | zzz   |
----------------


The goal is to produce something like

-------------------------------
_id    | slug | value | count
-------------------------------
1      | a_a  | 1024  | 2
2      | g_z  | 2048  | 3
...

Я пробовал что-то вроде:

ВЫБРАТЬ * ИЗ А UNION ВЫБЕРИТЕ СЧЕТ (*) ОТ A.slug;

но я упускаю суть, и если бы решение было, оно было бы немного сложнее.

возможное решение: включите в таблицу счетчик a

Спасибо

1 Ответ

0 голосов
/ 02 июля 2010

Поскольку имена ваших таблиц могут быть получены только из запроса, вам необходимо использовать динамический SQL, т.е. объединить строку запроса SQL на основе значений, которые вы ранее получили из базы данных.Это немного неуклюже в лучшем случае.Вы можете сделать это намного проще, спроектировав его по-другому, например, сохранив все ваши данные mytable_x_x в одной таблице и используя x_x в качестве ключа, к которому можно присоединиться.Тогда вы можете получить результат в одном запросе.

...