Как я могу выбрать несколько строк, сумма столбцов которых меньше определенного значения?

#mysql

#mysql

Вопрос:

У меня есть таблица под названием «маркеры», которая имеет такую структуру:

   ------ --------------- ----------- ------------- 
 |  id  |      about    |    time   |     type    |
 |------|---------------|-----------|-------------|
 |   1  |      text     |     2     |  restaurant |
 |------|---------------|-----------|-------------|
 |   2  |      text     |     1     |  restaurant |
 |------|---------------|-----------|-------------|
 |   3  |      text     |     2     |    museum   |
 |------|---------------|-----------|-------------|
 |   4  |      text     |     2     |     park    |
  ------ --------------- ----------- ------------- 
  

Из этой таблицы я хочу выбрать комбинацию строк, чтобы сумма времени была меньше или равна определенному значению. Например, я хочу выбрать номер строки 1,3 и 4, потому что общее время меньше или равно 6.
Я думаю, что запрос должен звучать так: SELECT 'all rows' WHERE SUM(time) < 6 , но это работает не так просто.
Другой вопрос, который может возникнуть, заключается в том, что если я выбираю сумму, равную 3, в этом случае у меня есть несколько комбинаций (строка 1 со строкой 2, строка 2 со строкой 3 .. и так далее). Что я могу сделать, чтобы выбрать одно значение каждого типа?
Надеюсь, я все понял. Заранее спасибо!

 SELECT id, time, type 
FROM `markers` 
WHERE type IN (
     SELECT type FROM markers 
     WHERE (type = 'restaurant' OR type = 'museum' OR type = 'park') 
     GROUP BY type HAVING SUM(time_to_spend)< 20
     ) 
  

Для 3 я ожидал бы чего-то подобного:

------ --------------- ----------- -------------
| id | about | time | type |
|------|---------------|-----------|-------------|
| 2 | text | 1 | restaurant |
|------|---------------|-----------|-------------|
| 3 | text | 2 | museum |
|------|---------------|-----------|-------------|

или любая другая комбинация.

Комментарии:

1. Можете ли вы опубликовать ожидаемый результат, скажем, для 3?

2. Похоже, вам нужно будет использовать некоторую рекурсию. Вот SQL-решение проблемы с рюкзаком, которое достаточно похоже на вашу проблему, чтобы вы могли его адаптировать aprogrammerwrites.eu/?p=560

3. Спасибо, я попробую предложенную вами ссылку и вернусь с дополнительной информацией. Что касается вывода для 3, для меня было бы лучше, если бы я мог видеть или выводить в другой таблице или где-то еще все возможные комбинации.