Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 11:28   #1
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию Запрос с условием

Таблица Access, создание запроса, в дальнейшем делается динамический запрос в Дельфи.

Есть связанные таблицы material, sodRash, sodRashDop, SodPrih, SodPrihDop.
Предназначены для прихода и расхода материала.
Привожу краткое содержимое, где PK-ключевое поле, FK-связанное по нему поле другой таблицы.
Связь материала по расходу:
Material (kodMaterial(PK), Name, Ostatok) связь один ко многим SodRash(KodSodRash(PK), KodMaterial(FK), Kol, Stoimost)
связь один ко многим SodRashDop(KodRash(PK), KodSodRash(FK),DateRashod, OstatokRashod)
Также есть другая связь по материалу для прихода:
Material (kodMaterial(PK), Name, Ostatok) связь один ко многим SodPrih(KodSodPrih(PK), KodMaterial(FK), Kol, Stoimost)
связь один ко многим SodPrihDop(KodPrih(PK), KodSodPrih(FK),DatePrihod, OstatokPrihod)

Требуется создать запрос:
Отображение наименование материала и Остаток (вычисляемый) за определенную дату по приходу.

Остаток для материала вычисляется таким образом:
За определенную <=дату суммируются все остатки прихода (OstatokPrih) для каждого определенного материала
и вычитается из суммы остатков расхода (OstatokRash).
Это делал через вложенный подзапрос, но в задаче стоит следующее условие, если данного материала нет в таблице расходов
(то есть по нему не было расходов), то считать остатком поле из material.Ostatok.

Как в запросе реализовать такую конструкцию условия?

Пробовал сначала вычислить остаток для материалов, которые есть в расходе, а потом через UNION прибавить другой запрос для материалов,
которых нет в расходе (но как найти?).

Если есть идеи какие конструкции использовать при построенни данного запроса, то напишите, хотя бы схематично.
Как правильно составить данную конструкцию?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 05.05.2010, 14:19   #2
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Вообщем, сделал, вроде правильно работает:

Вычислил сначала отдельным запросом остаток прихода для которого есть записи в расходе, потом отдельным запросом для которых нет записей, и после объединил эти два запроса.
На псевдокоде примерно так будет выглядеть

Код:
Select 
S1.material.name, (S1.OstatokPrih-S2.OstatokRash) as OstatokPrih
FROM  
(здесь запрос на сумму OstatokPrih  и прочие условия на дату и группировка) As S1,
(здесь запрос на сумму OstatokRash  и прочие условия и группировка) As S2
WHERE
S1.material.kodmaterial=S2.material.kodmaterial
UNION
S1.material.name, (SUM(SodPrihdop.ostatokprihod)) as OstatokPrih
From
(запрос где условие material.kodmaterial not in (запрос на код материала в расходе))
Вопрос: Так и надо делать, или есть более простые профессиональные пути решений таких задач?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 05.05.2010, 15:58   #3
Neymexa
Proffesional
Форумчанин
 
Аватар для Neymexa
 
Регистрация: 18.11.2008
Сообщений: 417
По умолчанию

думаю что в access нет.Вот если бы это была ms sql то другое дело
О, степь родимая, как я скучаю по тебе...
Neymexa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос с условием отбора [Введите фамилию] spets Microsoft Office Access 9 21.01.2014 02:02
Запрос с условием периода времени Ksy Microsoft Office Access 8 06.05.2010 03:24
SQL запрос с условием Veiron SQL, базы данных 4 30.03.2010 19:58
Ссумирование с условием Dendy702200 Microsoft Office Access 2 26.12.2009 17:33
Запрос на удаление с условием Dimok82 SQL, базы данных 1 13.03.2009 18:19