powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с запросом на выборку!
12 сообщений из 12, страница 1 из 1
Помогите с запросом на выборку!
    #32804734
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы "Заказ", "Состав заказа", "Склад".
"Состав заказа" содержит артикулы по каждому Заказу.
Каждая ее запись связана с таблицей "Склад".
В табл. "Склад" есть поле "ДатаСклада". В нем либо дата прихода артикула, либо Null. Артикулы одного Заказа могут иметь одинаковую "ДатаСклада"(пришли одновременно), разные даты(пришло все, но частями), даты + Null(что-то еще не пришло), Null(ничего не пришло).
Надо сотворить запрос, который показывал бы состояние Заказа на произвольную дату выборки. Т.е типа "пришел весь", "не весь", "не пришел".
Бился пол-дня, ничего не выходит.
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32805064
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос буду делать без учета склейки таблиц, считаю что для этого есть отдельный сохраненный запрос z1 (id_zakaz, artikul)

z2:
Код: plaintext
1.
2.
Select id_zakaz, count( 1 ) as zakaz_cnt, sum(iif(isnull(artikul),  0 ,  1 ) as real_cnt
from z1
group by id_zakaz

z3:
Код: plaintext
1.
Select id_zakaz, iif(real_cnt =  0 , 'пустой', iif(real_cnt = zakaz_cnt, 'полный', 'частичный')) as sost
From z2

?
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32805067
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS: В z2 закрывающей скобки не хватает
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32806074
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не выходит.
Не понял каким должен быть исходный запрос Z1?
Урезанная таблица "Состав заказа":
3 поля составного ключа(связь с "Заказы"), Артикул, IDСклад(связь с "Склад").
Урезанная таблица "Склад":
IDСклад, ДатаСклада.
Выражение isnull(artikul) никогда не равно Null - каждая запись "Состав заказа" уж артикул точно содержит...
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32806351
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, замени артикул на [ДатаСклада]

Т.е. - идея такая
В z2 я считаю реальное число позиций заказа и уже пришедшее число позиций,
а в z3 просто сравниваю эти 2 числа!

PS: не надо пытаться тупо копировать запрос и уповать на его работоспособность, т.к.:
1. на форуме все люди, а людям как известно свойственно ошибаться
2. вы понимаете суть своей проблемы, а читающий может и не все понять (или не до конца) - в связи с чем увеличивается вероятность ошибки
3. у нас нет ваших данных, следовательно мы не можем всесторонне проверить работоспособность запросов - из чего следует, что запросы часто пишутся на "коленке"
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32807564
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C принципом отбора разобрался - спасибо!
А к чему дату выборки присобачить?
Если отбирать только по ДатаСклада, то в отобранное попадают все записи, где это поле равно Null.
Надо добавить еще условие ЗаказДата <= Дата выборки, чтоб не вылезали "будущие" заказы, так что-ли?
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32807581
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C принципом отбора разобрался - спасибо!
А к чему дату выборки присобачить?
Если отбирать только по ДатаСклада, то в отобранное попадают все записи, где это поле равно Null.
Надо добавить еще условие ЗаказДата <= Дата выборки, чтоб не вылезали "будущие" заказы, так что-ли?
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32808042
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот отбор по ДатаСклада напрочь губит такой красивый способ:
z2 (c учетом исправлений):
Код: plaintext
1.
2.
Select id_zakaz, count( 1 ) as zakaz_cnt, sum(iif(isnull(ДатаСклада),  0 ,  1 ) as real_cnt
from z1
group by id_zakaz
при этом запрос z1 выглядел так:
Код: plaintext
1.
Select СоставЗаказа.id_zakaz, СоставЗаказа.artikul, Склад.ДатаСклада
FROM Склад RIGHT JOIN СоставЗаказа ON Склад.IDСклад = СоставЗаказа.IDСклад
Если теперь в запросе z1 добавить условие: ДатаСклад <= ДатаОтбора, то пропадут какие-то строки, соответственно в запросе z2 будет неправильно считаться выражение Count(1), ну и дальше пойдут ошибки.
И опять я вернулся к своему разбитому корыту!!!
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32808234
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли теперь в запросе z1 добавить условие: ДатаСклад <= ДатаОтбора, то пропадут какие-то строки, соответственно в запросе z2 будет неправильно считаться выражение Count(1), ну и дальше пойдут ошибки.
И опять я вернулся к своему разбитому корыту!!!
Код: plaintext
(ДатаСклад <= ДатаОтбора) Or (ДатаСклад Is Null)
?
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32808271
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зацените, получается монстр:
запрос z1
Код: plaintext
1.
Select СоставЗаказа.id_zakaz, СоставЗаказа.artikul, Склад.ДатаСклада
FROM Склад RIGHT JOIN СоставЗаказа ON Склад.IDСклад = СоставЗаказа.IDСклад
запрос z2, число строк в Заказе
Код: plaintext
1.
2.
Select id_zakaz, count( 1 ) as zakaz_cnt
from z1
group by id_zakaz
запрос z11,как z1, но с отбором по дате
Код: plaintext
1.
2.
Select СоставЗаказа.id_zakaz, СоставЗаказа.artikul, Склад.ДатаСклада
FROM Склад RIGHT JOIN СоставЗаказа ON Склад.IDСклад = СоставЗаказа.IDСклад
WHERE [ДатСклада]<= дата отбора
запрос z21, число строк в возможно урезанном Заказе
Код: plaintext
1.
2.
Select id_zakaz, count( 1 ) as zakaz_cnt
from z11
group by id_zakaz
итоговый запрос
Код: plaintext
1.
2.
SELECT z2.id_zakaz, [z2]![zakaz_cnt]-nz([z21]![zakaz_cnt],[z2]![zakaz_cnt]+ 1 ) AS qwerty,
 IIf([qwerty]> 0 ,'часть',IIf([qwerty]=-1,'пусто','весь')) AS Выражение1
FROM z21 RIGHT JOIN z2 ON z21.id_zakaz = z2.id_zakaz
может чего упростить можно?
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32808278
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И так нормально :)
...
Рейтинг: 0 / 0
Помогите с запросом на выборку!
    #32808284
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно:
Код: plaintext
(ДатаСклад <= ДатаОтбора) Or (ДатаСклад Is Null)
, но только это не спасает, пришлось сотворить "монстра"
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с запросом на выборку!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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