gpt4 book ai didi

java - 当子值匹配时,Firebase 对所有子条目求和

转载 作者:行者123 更新时间:2023-12-02 10:44:28 25 4
gpt4 key购买 nike

我在sql中看到了这个问题this question但这将如何在 firebase 中实现。这是我的 firebase 结构 database

我需要根据姓名汇总费用总额。我需要这样的输出

输出

petrol:25
oil:83
gross:25

我尝试过以下代码

expensesaddref=databaseReference.child(username).child(monthyr);
totaldatabaseref=databaseReference.child(username).child("Expense Cost").child(monthyr);
expensesaddref.orderByChild("expensesName").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.d("Tag", "on exp total");
int tot=0;
String exp = null;
for(DataSnapshot ds:dataSnapshot.getChildren()){
ExpenseClass expenseAdd=ds.getValue(ExpenseClass.class);
tot+=expenseAdd.getTotal();
exp=expenseAdd.getExpensesName();

}
ExpenseClass expensesAdd=new ExpenseClass(exp,tot);
String ref= "expensescost_"+ expensesAdd.getExpensesName();
totaldatabaseref.child(ref).setValue(expensesAdd);
Log.d("TAG", exp + "");
Log.d("TAG", tot + "");


Log.d("Tag", "After exp total");

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

我的输出为 0。请帮助我

最佳答案

您可以使用orderByChild(),然后获取total子值来求和。我所说的在代码中看起来像这样:

ref.child("October_2018").orderByChild("expensesName").equalTo("oil").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot data: dataSnapshot.getChildren()){
int sum=0;
sum += data.child("total").getValue(Integer.class);


}

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

这里的 ref 是您的 Firebase 数据库的 DatabaseReference

关于java - 当子值匹配时,Firebase 对所有子条目求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com