Страница 1 из 2

Помогите составить запрос

Добавлено: 27 дек 2006, 11:20
Владимир
Добрый день всем.
Данность: есть две таблицы 1. "ДолгиКонтрагентов" - поля "id контрагента", "сумма долга", 2. "ДокументыОтгрузки" - поля "id документа", "дата отгрузки", "сумма отгрузки".
Задача: составить запрос, который возвращал бы выборку документов по контрагентам, при этом в выборку должны попасть документы сумма которых не превышает сумму долга контрагента
БД: MS SQL 2K

Подскажите, можно ли составить такой запрос

Re: Помогите составить запрос

Добавлено: 27 дек 2006, 12:14
Duncon
Можно все, уважаемый почитайте тут
http://www.mysql.ru/docs/tkachenko/
а потом тут
http://www.mysql.ru/docs/pautov/app1.htm
и тут
http://www.activeserverpages.ru/Database/sql/select.asp

Re: Помогите составить запрос

Добавлено: 27 дек 2006, 15:02
Хыиуду
Навскидку:
select id_контрагента, id_документа
from ДолгиКонтрагентов, ДокументыОтгрузки
where ДокументыОтгрузки.СуммаОтгрузки<ДолгиКонтрагентов.СуммаДолга
order by id_контрагента
Угадал?

Re: Помогите составить запрос

Добавлено: 27 дек 2006, 17:13
Владимир
Хыиуду писал(а):Навскидку:
select id_контрагента, id_документа
from ДолгиКонтрагентов, ДокументыОтгрузки
where ДокументыОтгрузки.СуммаОтгрузки<ДолгиКонтрагентов.СуммаДолга
order by id_контрагента
Угадал?
Не угадал. Такой запрос вернет только те документы у которых сумма отгрузки < суммы долга, а мне нужно вернуть список документов у которых
SUM(ДокументыОтгрузки.СуммаОтгрузки)<ДолгиКонтрагентов.СуммаДолга

Re: Помогите составить запрос

Добавлено: 27 дек 2006, 17:15
Владимир
Duncon писал(а):Можно все, уважаемый почитайте тут
http://www.mysql.ru/docs/tkachenko/
а потом тут
http://www.mysql.ru/docs/pautov/app1.htm
и тут
http://www.activeserverpages.ru/Database/sql/select.asp
Я посмотрел ссылочки, но что-то не помогло. Можно "пальцем показать" и привести пример запроса

Re: Помогите составить запрос

Добавлено: 27 дек 2006, 18:13
Хыиуду
Владимир писал(а):Не угадал. Такой запрос вернет только те документы у которых сумма отгрузки < суммы долга, а мне нужно вернуть список документов у которых
Sum(ДокументыОтгрузки.СуммаОтгрузки)<ДолгиКонтрагентов.СуммаДолга
Теряю логическое понимание - что все-таки должен делать запрос?
Допустим, есть у нас два контрагента с долгами, скажем, 14 и 20. Есть документы с суммами 1, 3, 5, 8, 15. Что запрос должен вернуть?

Re: Помогите составить запрос

Добавлено: 28 дек 2006, 10:03
Владимир
Контрагент | Документ | Долг | Сумма документа
К1 Д1 14 1
К1 Д2 14 3
К1 Д3 14 5
К2 Д5 20 15
К2 Д6 20 5

или
К1 Д3 14 5
К1 Д4 14 8
К2 Д5 20 15
К2 Д7 20 4
или
К1 Д1 14 1
К1 Д2 14 3
К1 Д4 14 8

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

P.s. сорри что ответил только сегодня

Re: Помогите составить запрос

Добавлено: 28 дек 2006, 22:09
Игорь Акопян
я что-то упорно не вижу связи между этими таблицами...
&quot писал(а):сумма которых не превышает сумму долга контрагента
какого-то конкретно?

Re: Помогите составить запрос

Добавлено: 29 дек 2006, 09:34
Владимир
исходных таблиц две:

1. Контрагент | Сумма долга
К1 | 14
К2 | 20

2. Контрагент | Документ отгрузки| Сумма документа
К1 | Д1 | 1
К1 | Д2 | 3
К1 | Д3 | 5
К1 | Д4 | 8
К2 | Д5 | 15
К2 | Д6 | 5
К2 | Д7 | 4

Меня интерисует можно ли получить одним запросом выборки которые я описывал выше

Re: Помогите составить запрос

Добавлено: 29 дек 2006, 11:14
Хыиуду
Если я правильно помню философию Sql, она вообще не подразумевает, что по одному и тому же запросу можно получить такую-то таблицу ИЛИ сякую-то. По-моему, здесь нужно вытаскивать эти таблицы в программку на каком-нибудь алгоритмическом языке, а там уже их обрабатывать как душе угодно