SQL - 需要绕过多个WHERE约束

时间:2016-06-08 19:55:06

标签: sql sql-server tsql where

我的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

2 个答案:

答案 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);
                }
            });