Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите составить запрос  [new]
android1
Member

Откуда:
Сообщений: 10
Есть таблица Product(int id, int price)

Нужно вывести всевозможные комбинации товаров на определенную сумму. Товар в комбинации не может повторяться.

Пример:
id price
1 10
2 20
3 30
4 10

Вывести все комбинации товаров, которые можно купить на 50 единиц.

Ответ:
1-10, 3-30, 4-10
2-20, 3-30

Можно использовать только комбинации запрос, cte и рекурсивные cte. Никаких курсоров, дополнительных переменных и т.к. использовать нельзя.

Спасибо за помощь.
28 ноя 11, 19:25    [11673892]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
declare @sum int = 50
;with d as (
select 10 d
union all select 20
union all select 30
union all select 10 
),
cte as (
select d0=d, d1=d, s=cast(d as VarChar(8000)) 
from d where d <= @sum 
union all
select d+d0, d, s=s+'+'+cast(d as VarChar(8000)) 
from d, cte
where 
d+d0<=@sum
and d>=d1
)
select distinct d0,s from cte where d0 = @sum
28 ноя 11, 19:29    [11673914]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
android1, обоснуйте требование того, что это должно быть в рамках одного запроса. sql-ex?
28 ноя 11, 20:08    [11674098]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
grigrim
Member

Откуда: Москва
Сообщений: 89
kDnZP,

вот мне тоже задача что-то напомнила.
28 ноя 11, 20:45    [11674231]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
android1
Member

Откуда:
Сообщений: 10
kDnZP,
имелось ввиду не использовать отдельную процедуру.
28 ноя 11, 22:59    [11674681]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
android1
Member

Откуда:
Сообщений: 10
Knyazev Alexey,
Спасибо. Но в запросе должны учитываться id номера. Т.к. один и то же id не может входить в результирующий набор.
29 ноя 11, 13:10    [11677172]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить