powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите составить запрос
2 сообщений из 2, страница 1 из 1
Помогите составить запрос
    #32182185
Дмитрий Польской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеются пять таблиц:
1. MATERIALS - справочник материалов с полями
material_code - уник. код
material_name - наименование
...
2. IN_MATERIALS - журнал операций прихода с полями
operation_code - уник. код операции
operation_date - дата операции
...
3 IN_MATERIAL_ITEMS - перечень материала в каждой операции с полями
operation_code - ссылка на IN_MATERIALS."operation_code"
material_code - ссылка на MATERIALS."material_code"
quantity - количество пришедшего материала
4. OUT_MATERIALS - журнал операций расхода с полями
operation_code - уник. код операции
operation_date - дата операции
...
5. OUT_MATERIAL_ITEMS - перечень материала в каждой операции с полями
operation_code - ссылка на OUT_MATERIALS."operation_code"
material_code - ссылка на MATERIALS."material_code"
quantity - количество пришедшего материала

Хочу получить выборку всех материалов с остатком на некоторое число. При этом, чтобы если материал не участвовал не в одной из операций(хранится только на уровне справочника) в качестве остатка выводился NULL (или 0) Делал так, но выводятся только участвовавшие в операциях материалы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select MATERIALS. "material_code" , MATERIALS. "material_name" ,
       MATERIALS. "character_name" , MATERIALS. "count_descr" ,
       MATERIALS. "parent" ,
       sum(IN_MATERIAL_ITEMS. "quantity" ) - sum(OUT_MATERIAL_ITEMS. "quantity" ) summ
from
MATERIALS left outer join IN_MATERIAL_ITEMS
            on MATERIALS. "material_code"  = IN_MATERIAL_ITEMS. "material_code" ,
    MATERIALS left outer join OUT_MATERIAL_ITEMS
            on  MATERIALS. "material_code"  = OUT_MATERIAL_ITEMS. "material_code" ,
    IN_MATERIALS, OUT_MATERIALS
where
    (IN_MATERIALS. "operation_date"  = '12.06.2003')  and
    (OUT_MATERIALS. "operation_date"  = '12.06.2003') and
    (IN_MATERIAL_ITEMS. "operation_code"  = IN_MATERIALS. "operation_code" ) and
    (OUT_MATERIAL_ITEMS. "operation_code"  = OUT_MATERIALS. "operation_code" )


group by  MATERIALS. "material_code" , MATERIALS. "material_name" , MATERIALS. "character_name" ,
         MATERIALS. "count_descr" , MATERIALS. "parent" 


Помогите составить правильный запрос. Спасибо.
...
Рейтинг: 0 / 0
Помогите составить запрос
    #32182202
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы по-проще сделали и описали бы по проще. Кто в вашем огромном запросе станет разбираться. К тому же, я думаю, что и сам сервер от такого запроса не обрадуется.

Могу только сказать, что для того, чтобы выводились все материаллы, вы должны перенести какие-то ограничения из секции where в join ... on ...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите составить запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]