SQL-запрос для сложения столбцов - PullRequest
0 голосов
/ 29 апреля 2019
| ORDERID | subtotal | 
--------------------
|  1000   |   50  |    

|  1000   |   100 |

|  1001   |   75  |

Нужен запрос, который суммирует все цены, когда orderid равен 1000 и возвращает 150. Я пробовал использовать функцию sum с предложением where, но она не работает.Вот мой код:

public double findTotalSubtotal(String order_id) {
     double sum = 0 ;
     PreparedStatement ps;
    try {
        ps = connect.prepareStatement("select sum(subtotal) from order where ORDERID = ?");

     ps.setString(1,order_id);
     ResultSet rs = ps.executeQuery();
     while (rs.next()) {
          int c = rs.getInt(1);
          sum = sum + c;
        }
     }catch(Exception ex) {
         ex.printStackTrace();
     }

    return sum;

}

Любая моя ошибка: у вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'order, где ORDERID =' 1000 '' в строке 1

1 Ответ

3 голосов
/ 29 апреля 2019

Отредактировано для включения фактического имени таблицы.

С дополнительной информацией о том, как называется ваша таблица, я вижу, в чем проблема."order" - это ключевое слово SQL, поэтому вы не можете использовать его как есть в качестве имени таблицы в запросе.Вы должны окружить его квадратными скобками спиной (потому что MariaDB):

select sum(price) from `order` where ORDERID = 1000

Это предполагает, что цена хранится как числовой тип.Обычно это довольно безопасное предположение, но если вы храните его как VARCHAR, это не сработает (и вам, вероятно, следует изменить структуру таблицы, чтобы использовать более подходящий тип).

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