Более эффективный способ назначения значения столбца во время оператора SELECT - PullRequest
0 голосов
/ 03 апреля 2019

В Android Room у меня есть запрос SELECT, в котором я присваиваю значение столбца component_category.name другому столбцу: component.component_category_name

после нескольких испытаний мне удалось сделать это с помощью следующего запроса:

@Query("SELECT component.id, rack_id, component_category_id, component.name, component.component_category_name, code, component.img_path, " +
        "       (SELECT COUNT(component.id) " +
        "        FROM component " +
        "        WHERE component.rack_id = :rackID) as count, " +
        "       (SELECT name " +
        "        FROM component_category " +
        "        WHERE component_category.id == component_category_id) as component_category_name " +
        "FROM component " +
        "INNER JOIN component_category ON component_category.id = component.component_category_id " +
        "WHERE component.rack_id == :rackID ORDER BY component.name ASC")
LiveData<List<Component>> getRackComponents(long rackID);

но мне интересно, есть ли более эффективный способ уменьшить размер моего запроса.

Я попробовал следующее:

@Query("SELECT component.id, rack_id, component_category_id, component.name, component.component_category_name AS [component.component_category_name], code, component.img_path, " +
        "       (SELECT COUNT(component.id) " +
        "        FROM component " +
        "        WHERE component.rack_id = :rackID) as count " +
        "FROM component " +
        "INNER JOIN component_category ON component_category.id = component.component_category_id " +
        "WHERE component.rack_id == :rackID AND component_category.id == component.component_category_id ORDER BY component.name ASC")
LiveData<List<Component>> getRackComponents(long rackID);

эта пробная версия, но component.category_name равно null в результате этого запроса.

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