我的WHERE语句中有一个聚合函数以及其他更正常的WHERE约束。如果我使用所有AND语句将WHERE语句绑定在一起,那么查询检查正常。
但是,我需要使用OR语句来获取正确的数据。当我尝试使用OR语句运行查询时,我收到“除以零” 错误。尽管我的一个限制是ExampleQuantity不能等于0,但它正在发生。
我应该如何解决这个问题,我可以使用OR语句,而不是有零除错误?我确信有一个简单的解决方案,我只是看不到它。
以下是我的查询示例:
SELECT *
FROM table1
WHERE ExampleCode1 BETWEEEN 1 AND 10
AND ExampleNo IN (1, 2, 3, 4)
**AND/OR** ExampleQuantity =! 0
AND ExamplePrice/ExampleQuantity = ExampleAmount
答案 0 :(得分:4)
正如jean
建议的那样,简单地将除法重写为乘法避免除以零。
SELECT *
FROM table1
WHERE ExampleCode1 BETWEEEN 1 AND 10
AND ExampleNo IN (1, 2, 3, 4)
OR ExamplePrice * ExampleQuantity = ExampleAmount
我认为您的测试可能有误,通常价格表示每单位价格而金额代表总价
答案 1 :(得分:1)
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
Bill updateBill = realm.where(Bill.class).equalTo("Bill_ID", bill).findFirst();
DetailMenu menu = new DetailMenu();
RealmList<PersonInMenu> personInMenus = new RealmList<>(); //added line
menu.personInMenus = personInMenus; //added line
menu.setMenuID(MenuID);
menu.setMenuName(String.valueOf(menuName.getText()));
menu.setMenuPrice(Price);
menu.setQuantity(Qty);
for (int i = 0; i < adapter.getPersonMenuObjList().size(); i++) {
PersonInMenu pim = new PersonInMenu();
pim.setPersonID(adapter.getPersonMenuObjList().get(i).getPersonID());
pim.setStatus(adapter.getPersonMenuObjList().get(i).isStatus());
menu.personInMenus.add(pim);
}
updateBill.detailmenu.add(menu);
realm.copyToRealmOrUpdate(updateBill);
}
});