Вначале немного о моей проблеме:
Я строю гусеничный ход, и я хочу отслеживать списки рекордов.
Списки рекордов определяются двумя параметрами: категорией и коллекцией (вместе уникальными).
После успешной загрузки я создаю запись о новой записи (категория, коллекция, createdAt, ...)Sqlite относительное дополнение на комбинированном ключе
Проблема: Я хочу запросить список рекордов только один раз в день. Поэтому мне нужен запрос, который будет возвращать категорию и коллекцию, которые не были загружены за 24 часа. Для этого следует использовать таблицу статистики.
У меня есть список всех возможных категорий и всех возможных коллекций. Они работают как крест. Итак, в основном мне нужно относительное дополнение к перекрестному соединению с записями последних 24 часов
Моя идея: перекрестные категории и коллекции и «вычитание» всей пары (категории, коллекции) записей статистики, которые были созданы во время последние 24 часа
Вопрос 1: Можно ли определять категории и коллекции внутри запроса и перекрестно присоединяться к ним или мне нужно создать таблицу для них?
Вопрос 2: Правильно ли моя идея? Как вы это сделаете в Sqlite?
Хорошо, я понимаю, что это может показаться запутанным, поэтому я нарисовал образ того, что я действительно хочу.
Я заинтересован в С.
Вот мой текущий код в Java, может быть, это помогает понять проблему:
public List<Pair<String, String>> getCollectionsToDownload() throws SQLException {
long threshold = System.currentTimeMillis() - DAY;
QueryBuilder<TopAppStatistics, Long> query = queryBuilder();
List<TopAppStatistics> collectionsNotToQuery = query.where().ge(TopAppStatistics.CREATED_AT, threshold).query();
List<Pair<String, String>> toDownload = crossJoin();
for (TopAppStatistics stat : collectionsNotToQuery) {
toDownload.remove(new Pair<>(stat.getCategory(), stat.getCollection()));
}
return toDownload;
}
private List<Pair<String, String>> crossJoin() {
String[] categories = PlayUrls.CATEGORIES;
String[] collections = PlayUrls.COLLECTIONS;
List<Pair<String, String>> toDownload = new ArrayList<>();
for (String ca : categories) {
for (String co : collections) {
toDownload.add(new Pair<>(ca, co));
}
}
return toDownload;
}