Учитывая следующую таблицу:
ID : int
Quantity : smallint
Price : float(5,2)
Я попытался выполнить следующий запрос :
ВЫБРАТЬ ИД, СУММА (Количество * Цена) ОТtest GROUP BY ID;
Как и ожидалось, это было правильно выполнено в MySQL Workbench, однако в Qt этого не произошло.
С заполнением таблицы следующим содержимым:
| ID | Quantity | Price |
| 1 | 3 | 1.00 |
| 1 | 3 | 2.00 |
| 2 | 3 | 3.00 |
И со следующей реализацией в Qt:
qDebug() << "Running...";
QSqlQuery query(myDB);
query.prepare(" SELECT ID, SUM(Quantity * Price) FROM test GROUP BY ID;");
if(!query.exec())
throw "Error";
else{
qDebug() << "Size: " << query.size();
while(query.next()){
qDebug() << query.value(0).toInt();
qDebug() << query.value(1).toFloat();
}
}
qDebug() << "End!";
Результат:
Running...
Size: 2
End!
Так что, хотя возвращаемый размер равен 2, цикл равенникогда не запускается.
Как ни странно, когда я изменяю переменную Price на int , проблема исчезает.