Room DB select Список всех предметов + общая сумма этих предметов - PullRequest
0 голосов
/ 25 июня 2018

У меня 2 запроса из БД ROOM:

@Query("SELECT * FROM basket_items")
Flowable<List<BasketItem>> getAll();

@Query("SELECT SUM(count*amount) FROM basket_items")
Flowable<Long> totalSum();

Как я могу объединить эти запросы в один запрос? И какой тип модели он будет возвращать?

1 Ответ

0 голосов
/ 25 июня 2018

Room Queries может возвращать POJO (не @Entity), и поэтому вы можете сделать временную модель для вашего DAO.

Как я уже спрашивал в комментариях, я не знаю, чего вы пытаетесь достичь (как и какую ценность вы хотите получить от этих запросов).

Но, надеюсь, этот пример может помочь:

YourDao.java

@Query("SELECT name AS nameItem, (count * amount) AS countItem FROM basket_items")
Flowable<List<CountedBasketItem>> getAllCounted();

static class CountedBasketItem {
    String nameItem;
    Long countItem;
}

Дополнительный ответ

То, что вы хотите вернуть Список и общая сумма не представляется возможным по запросу. SUM - метод агрегации, вы агрегируете список.

Итак, есть 2 варианта, которые вы можете сделать:

  1. Используйте GROUP BY в своем запросе

  2. Или выполните те 2 Flowable и получите результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...