【问题标题】:Android Room get field from other tableAndroid Room 从其他表中获取字段
【发布时间】:2019-01-12 08:19:23
【问题描述】:

在我的应用程序中,我有两个表:Operations 和 Categories。

手术台

@Entity(tableName = "OperationsTable")
public class Operation
{
    @PrimaryKey (autoGenerate = true)
    private int OperationNumber;
    private int Year;
    private int Month;
    private int Day;
    private String Category;
    private float Amount;
}

类别表

public class Category implements Serializable
{
    @PrimaryKey(autoGenerate = true)
    private int id;

    @ColumnInfo(name = "CategoryName")
    private String name;

    @ColumnInfo(name = "CategoryType")
    private String type;

    @ColumnInfo(name = "IconID")
    private int iconID;
}

到目前为止,我一直在进行返回操作子集的查询:

@Query("SELECT Category as CategoryName, SUM(Amount) as OperationQuantity FROM OperationsTable WHERE Year = :year AND KindOfOperation = 'Gasto' AND Month = :month GROUP BY Category ORDER BY SUM(Amount) DESC")
LiveData<List<OperationSubset>> getCategorizedExpensesInMonth(Integer year, Integer month);

子集是这样的:

public class OperationSubset
{
    @ColumnInfo(name = "CategoryName")
    public String name;

    @ColumnInfo(name = "OperationQuantity")
    public float quantity;
}

现在我想返回相同的子集,但从类别表中添加一个字段:

public class OperationSubsetDesired
{
    @ColumnInfo(name = "CategoryName")
    public String name;

    @ColumnInfo(name = "OperationQuantity")
    public float quantity;

    public float iconID <-- from Categories table
}

我知道我必须使用关系,但我正在为此苦苦挣扎。

【问题讨论】:

  • 这些实体是不同的表。

标签: android sql foreign-keys android-room


【解决方案1】:
 @Query("SELECT Category as CategoryName, SUM(Amount) as OperationQuantity, Categories.IconID" +
            " FROM OperationsTable LEFT JOIN Categories ON OperationsTable.Category = Categories.CategoryName" +
            " WHERE Year = :year AND KindOfOperation = 'Gasto' AND Month = :month GROUP BY Category ORDER BY SUM(Amount) DESC")

应该是这样的。如果您将使用关系注释,您的对象结构将有所不同。 有关加入的更多信息,您可以在此处查看https://www.w3schools.com/sql/sql_join.asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2022-09-27
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多