Работа с / Sqlite Join результаты в курсоре - PullRequest
1 голос
/ 02 июня 2010

У меня есть отношения один-много в моем местном Sqlite db. Довольно простые вещи. Когда я выполняю левое внешнее соединение, я получаю результаты, которые выглядят так:

результирующий курсор имеет несколько строк, которые выглядят так:

A1.id | A1.column1 | A1.column2 | B1.a_id_fk | B1.column1 | B1.column2 

A1.id | A1.column1 | A1.column2 | B2.a_id_fk | B2.column1 | B2.column2 

и так далее ...

Существует ли стандартная практика или метод работы с такими результатами? Ясно, что есть только A1, но у него много связей B-n. Я близок к использованию нескольких запросов вместо «реляционного пути БД». Надеюсь, я просто не знаю, как лучше это делать.

Я намереваюсь выставить этот запрос через провайдера контента, и я бы не хотел, чтобы все потребители писали одну и ту же логику агрегирования.

1 Ответ

2 голосов
/ 02 июня 2010

Объединения работали таким образом в каждой базе данных SQL, которую я когда-либо использовал - это своего рода определение концепции.

Имейте в виду, что контент-провайдеры используют удаленные вызовы процедур, которые дороги. Это одна из причин, почему Android денормализует результаты в том же ключе, что и ваше объединение для таких вещей, как контакты, чтобы минимизировать циклические переходы между процессами.

Вы можете рассмотреть возможность использования удаленной службы вместо поставщика контента и предоставления пользовательского API. Вы можете вернуть B для данного A простым List<>. Или вы можете сериализовать все это в формате JSON. Или любое количество других возможностей, если дублирование данных мешает вам.

...