|
маленький запросик | ☑ | ||
---|---|---|---|---|
0
ХочуСпец
28.05.12
✎
14:08
|
Есть таблица:
Путь Важность Сумма Путь1 1 1000 Путь2 2 1000 Путь3 1 5000 Путь4 3 10 000 Есть некий параметр. Н-р, если параметр = 7000, это означает что мы должны отобрать строки (строку) ближайшие у которых Сумма <= 7000. В данном случае это будет третья строка. Если параметр = 2000, то в выборку должны попасть первые две строки. |
|||
1
Wobland
28.05.12
✎
14:09
|
продолжайте наблюдения
|
|||
2
Нуф-Нуф
28.05.12
✎
14:09
|
получи нарастающий итог и на него накладывай ограничение
|
|||
3
Wobland
28.05.12
✎
14:10
|
(2) не, нарастающий тут ни при чём.
добавь колонку про разницу между желаемым и имеемым и продолжай наблюдения |
|||
4
DrShad
28.05.12
✎
14:10
|
можно пакетником - отобрать различные суммы, потом первую <= МояСумма и затем уже все строки с суммой равной ей
|
|||
5
Kashemir
28.05.12
✎
14:12
|
А если 8000 ?
|
|||
6
ХочуСпец
28.05.12
✎
14:13
|
(5) тоже самое что и при 7000
|
|||
7
Kashemir
28.05.12
✎
14:13
|
(3) Нарастающим тут как раз и решается
|
|||
8
ХочуСпец
28.05.12
✎
14:13
|
(5) четвертую строку в данном случае отсекаем
|
|||
9
Wobland
28.05.12
✎
14:14
|
(7) >отобрать строки (строку) ближайшие у которых Сумма
точно? |
|||
10
ХочуСпец
28.05.12
✎
14:14
|
(7) но ведь поле Сумма не должна агрегироваться
|
|||
11
0_Serg_0
28.05.12
✎
14:14
|
(6) если 8 000 - то последняя
|
|||
12
0_Serg_0
28.05.12
✎
14:15
|
тюплю)
|
|||
13
Fragster
гуру
28.05.12
✎
14:16
|
автору надо задать вопрос - а если 6000?
|
|||
14
Бледно Золотистый
28.05.12
✎
14:17
|
(0) Выбираем первый максимальный удовлетворяющий условию - это вложенный запрос,потом связь по сумме с исходной таблицей
|
|||
15
ХочуСпец
28.05.12
✎
14:19
|
(12) если 6000 отбирается третья строка
|
|||
16
Kashemir
28.05.12
✎
14:20
|
А "важность" здесь роль играет ?
|
|||
17
Kashemir
28.05.12
✎
14:23
|
Вобщем с учетом приоритетности "важности" и уникальности ключей путь+важность
ВЫБРАТЬ ТЗ.Путь, ТЗ.Важность, ТЗ.Сумма ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Путь, ВложенныйЗапрос.Важность, ВложенныйЗапрос.НарастающийИтог, ТЗ.Сумма ИЗ (ВЫБРАТЬ ТЗ.Путь КАК Путь, ТЗ.Важность КАК Важность, СУММА(ТЗ1.Сумма) КАК НарастающийИтог ИЗ ТЗ КАК ТЗ ЛЕВОЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ1 ПО (ТЗ.Важность > ТЗ1.Важность ИЛИ ТЗ.Важность = ТЗ1.Важность И ТЗ.Путь >= ТЗ1.Путь) СГРУППИРОВАТЬ ПО ТЗ.Путь, ТЗ.Важность) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ ПО ВложенныйЗапрос.Путь = ТЗ.Путь И ВложенныйЗапрос.Важность = ТЗ.Важность ГДЕ ВложенныйЗапрос.НарастающийИтог <= &ОграничениеСуммы |
|||
18
Fragster
гуру
28.05.12
✎
14:23
|
Выбрать
Путь, Важность, Сумма, Выбор Когда Сумма > &Параметр Тогда Сумма - &Параметр Иначе &Параметр - Сумма Конец как Разность Поместить ВТ; Из Таблица Выбрать МИНИМУМ(Разность) как Разность Поместить МИ Из ВТ; Выбрать * Из ВТ Внутреннее Соединение мин По Вт.Разность = Мин.Разность |
|||
19
Fragster
гуру
28.05.12
✎
14:24
|
повторить для важности при необходмости
|
|||
20
Kashemir
28.05.12
✎
14:29
|
(9) Может и так. Больно постановка размытая и примеры вполне подходят как к набору на определенную сумму, так и на выбор максимального удовлетворяющего условию. Во втором случае все слишком скучно и неясно зачем тут столько 20 постов уже налепили :)
|
|||
21
ХочуСпец
28.05.12
✎
14:34
|
(18) выбираем не ближайшим, не корректно использовал в данном случае это слово
(20) что именно размыто? |
|||
22
ХочуСпец
28.05.12
✎
14:35
|
в (0), (5) все разжевано
|
|||
23
Kashemir
28.05.12
✎
14:36
|
С максимальной суммой можно например так
ВЫБРАТЬ ТЗ.Путь, ТЗ.Важность, ТЗ.Сумма ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТЗ.Путь, ТЗ.Важность, ТЗ.Сумма ИЗ ТЗ КАК ТЗ ГДЕ ТЗ.Сумма В (ВЫБРАТЬ МАКСИМУМ(ТЗ.Сумма) КАК Сумма ИЗ ТЗ КАК ТЗ ГДЕ ТЗ.Сумма < &ОграничениеСуммы) (21) Я описал 2 разных варианта трактовки твоей задачи. Наличие оных и говорит о размытости постановки. |
|||
24
ХочуСпец
28.05.12
✎
14:47
|
(23) спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |