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);
  • Вопрос задан
  • 105 просмотров
Решения вопроса 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
Похожие вопросы
Badoo Development Москва
от 140 000 до 180 000 руб.
ТК "Альфа" Тверь
от 40 000 до 60 000 руб.