yarhosting
@yarhosting
Заказывайте программинг: PHP,SQL, JS,jQuery,Joomla

Как сделать SQL запрос на выборку данных до определенной суммы?

Есть таблица: Дата, Количество, Сумма
Как вывести только последние записи на общее количество= $sum_count не прибегая к циклам

т.е. что то вроде:

SELECT `date`, `count`, `sum` FROM `table` WHERE sum(`count`)<=$sum_count ORDER BY `date` DESC

или

SELECT `date`, `count`, `sum` FROM `table` ORDER BY `date` DESC LIMIT sum(`count`)<=$sum_count

даже бы если такая конструкция и работала - она вывела бы на одну запись меньше, если sum(`count`)!=$sum_count

или все таки я обязан циклом

$count=0;
while ($count<=$sum_count) {
$count+=$row['count'];
//что-то делать
}

Исходник таблицы

CREATE TABLE IF NOT EXISTS `table` (
  `date` date NOT NULL,
  `count` int(11) NOT NULL,
  `sum` int(11) NOT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


INSERT INTO `table` (`date`, `count`, `sum`, `id`) VALUES
('2000-01-01', 10, 10, 1),
('2001-01-01', 10, 10, 2),
('2002-01-01', 10, 10, 3);
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
  • OKyJIucT
    @OKyJIucT
    Sunshine reggae
    Вместо оператора WHERE используйте HAVING

    SELECT `date`, sum(`count`), `sum` 
    FROM `table` 
    GROUP BY `count` HAVING sum(`count`) <= $sum_count 
    ORDER BY `date` DESC
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы