Как я могу выбрать только несколько строк в следующей таблице, чтобы они суммировались до определенного значения?
Table
-----
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 18
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
Скажем, верхнее значение, которое я хочу, составляет 57...
Поэтому мне нужно выбрать строки из предыдущей таблицы, чтобы qty1 + qty2 + qty3 + qty4 каждой строки, до тех пор, пока значение 57 не будет выбрано, и отбросьте остальные строки. В этом примере я бы получил следующее:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 18
Потому что 10 + 20 + 1,5 + 7,5 + 18 = 57, поэтому я отбрасываю строки 3 и 4...
Теперь я хочу, чтобы верхнее значение равно 50, тогда я должен получить:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
2 | 1.5 | 0.0 | 7.5 | 11
Так как эти значения суммируются до 50, а 7 из строки2, qty4 не учитывается... (BTW строки упорядочены таким образом, потому что тот порядок, в котором я хочу учитывать суммы qtys... Это недействительно для суммирования первой строки1, затем 3, затем 2, а затем 4, например... Их всегда следует суммировать в порядке 1,2,3,4...)
Что, если я хотел бы добавить это дополнение? Я имею в виду, что в двух других строках я не получил последнего результата.
Первый случай:
id | qty1 | qty2 | qty3 | qty4
------------------------------
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
Второй случай:
id | qty1 | qty2 | qty3 | qty4
------------------------------
2 | 0.0 | 0.0 | 0.0 | 7
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
(Если второй случай слишком сложный, как насчет получения:
id | qty1 | qty2 | qty3 | qty4
------------------------------
1 | 0.0 | 0.0 | 10 | 20
Поскольку добавление исходных чисел строки 2 превысит значение 50, я отбрасываю его... Дополнение в этом случае должно быть просто:
id | qty1 | qty2 | qty3 | qty4
------------------------------
2 | 1.5 | 0.0 | 7.5 | 18
3 | 1.0 | 2.0 | 7.5 | 18
4 | 0.0 | 0.5 | 5 | 13
)