|
|
|
Вывод всех вариантов сумм
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Есть таблица: ID | Model | Quantity | Price ----------------------------------- 1 | ABC | 1 | 10 2 | BCA | 2 | 20 3 | ACB | 4 | 30 4 | CBA | 6 | 40 Нужно вывести все варианты моделей, сумма Quantity которых, равна или больше задаваемого значения X Например задано значение X = 8 Результат вывода: 1 - Строка 1 | ABC | 1 | 10 1 | ABC | 1 | 10 1 | ABC | 1 | 10 1 | ABC | 1 | 10 1 | ABC | 1 | 10 1 | ABC | 1 | 10 1 | ABC | 1 | 10 1 | ABC | 1 | 10 2 - Строка 2 | BCA | 2 | 20 2 | BCA | 2 | 20 2 | BCA | 2 | 20 2 | BCA | 2 | 20 3 - Строка 3 | ACB | 4 | 30 3 | ACB | 4 | 30 4 - Строка 3 | ACB | 4 | 30 4 | CBA | 6 | 40 и т. д. Все возможные комбинации Исключить такие выводы: 2 | BCA | 2 | 20 3 | ACB | 4 | 30 4 | CBA | 6 | 40 Т. к. строчки (3 | ACB | 4 | 30) и (4 | CBA | 6 | 40), уже соответствует требованию В итоге подсчитать суммы всех комбинаций и вывести по возрастанию сумм комбинаций. Фууууххх..... Надеюсь Вы меня поняли))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2018, 15:05 |
|
||
|
Вывод всех вариантов сумм
|
|||
|---|---|---|---|
|
#18+
Ukey, какая версия MySQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2018, 15:47 |
|
||
|
Вывод всех вариантов сумм
|
|||
|---|---|---|---|
|
#18+
miksoft, Версия клиента базы данных: libmysql - mysqlnd 5.0.12-dev - 20150407 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2018, 15:59 |
|
||
|
Вывод всех вариантов сумм
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! И снова я) Вроде форум живой, но результатов я так и не получил. Продумал алгоритм перебора строк Условие то же. Нужно вывести все варианты моделей, сумма Quantity которых, равна или больше задаваемого значения X Например задано значение: $X = 8 SELECT ID, Model, Quantity, Price FROM Device WHERE Quantity < $X ORDER BY Quantity DESC t1 ID | Model | Quantity | Price ----------------------------------- 1 | ABC | 4 | 10 2 | BCA | 3 | 20 3 | ACB | 2 | 30 4 | CBA | 1 | 40 Алгоритм таков Выбираем 1 строку из таблицы 1 работаем пока с ней 1 | ABC | 4 | 10 Создаем вирт. копию t1: t2 xID | xModel | xQuantity | xPrice ----------------------------------- 1 | ABC | 4 | 10 2 | BCA | 3 | 20 3 | ACB | 2 | 30 4 | CBA | 1 | 40 Пробегаемся по t2 и берем значения xQuantity из первой строки и суммируем с Quantity. Если Quantity + xQuantity >= X Записываем во временную таблицу: 1 | ABC | 4 | 10 1 | ABC | 4 | 10 Далее пробегаемся по t2 и берем зачения xQuantity из первой строки и суммируем с Quantity t1 . Если Quantity + xQuantity >= X Записываем во временную таблицу: 1 | ABC | 4 | 10 2 | BCA | 3 | 20 Тут сумма Quantity + xQuantity < X, тогда пробегаемся по этой же строчке из t2 и еще раз прибавляем значения, т.е. Quantity + xQuantity + xQuantity = 10 >=X И т.д. с каждой строкой. t1.row1 -> t2.row1 t1.row1 -> t2.row2 t1.row1 -> t2.row3 t1.row1 -> t2.row4 t1.row2 -> t2.row2 t1.row2 -> t2.row3 t1.row2 -> t2.row4 t1.row3 -> t2.row3 t1.row3 -> t2.row4 t1.row4 -> t2.row4 Обратите внимание, что каждая новая строка t1, начинает делать поиск в t2 со своей копии. Уже три дня мучаюсь, никак не могу написать этот алгоритм. Не на столько силен в программировании(( Подскажите хотя бы куда копать? Большое спасибо за внимание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 20:38 |
|
||
|
Вывод всех вариантов сумм
|
|||
|---|---|---|---|
|
#18+
Это - задача не для SQL. То есть её, конечно, можно решить и в рамках DBMS, но это будет хранимая процедура, фактически написанная на алгоритмическом языке, в роли коего выступит диалект конкретной DBMS. Гораздо разумнее решать эту задачу на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 20:51 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=47&tid=1829592]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 146ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...