|
Условие на измерение регистра в подзапросе | ☑ | ||
---|---|---|---|---|
0
tgu82
20.12.13
✎
13:03
|
Мне нужно вставить в этот кусок запроса такую вещь: если проданная номенклатура (измерение регистра накопления ПродажиПоДисконтнымКартам) по дисконтной карте подобно параметру запроса, то 1 иначе 0. Я потом хочу в ГДЕ основной части запрос сделать проверку на 1 чтобы сократить число записей в результате запроса Точнее так: Номенклатура.Наименование ПОДОБНО &СтрокаПоиска |
|||
1
Wobland
20.12.13
✎
13:06
|
благословить?
|
|||
2
Wobland
20.12.13
✎
13:07
|
или сразу запретить делать так?
|
|||
3
tgu82
20.12.13
✎
13:15
|
(1,2) Будьте добры объясните что я сделал не так.
|
|||
4
tgu82
20.12.13
✎
13:16
|
(1,2) Вроде ж наоборот сделал секцию code, чтобы лучше читалось. Я просто чего-то не знаю видимо
|
|||
5
Wobland
20.12.13
✎
13:17
|
1) не очень понятно, зачем фильтровать выше, а не здесь
2) не очень понятна необходимость обращения к наименованию |
|||
6
Wobland
20.12.13
✎
13:17
|
3) не очень понятна цель ветки: похвастаться или просто уведомить
|
|||
7
tgu82
20.12.13
✎
13:19
|
(6) Да нет, там же вопрос
Мне нужно вставить в этот кусок запроса такую вещь: если проданная номенклатура (измерение регистра накопления ПродажиПоДисконтнымКартам) по дисконтной карте подобно параметру запроса, то 1 иначе 0. Я потом хочу в ГДЕ основной части запрос сделать проверку на 1 чтобы сократить число записей в результате запроса Точнее так: Номенклатура.Наименование ПОДОБНО &СтрокаПоиска Не получается у меня с этим условием |
|||
8
Wobland
20.12.13
✎
13:20
|
(7) вопрос заканчивается символом "?", так в советских школах учили. как сейчас, не знаю
|
|||
9
tgu82
20.12.13
✎
13:20
|
(5)
1) не очень понятно, зачем фильтровать выше, а не здесь 2) не очень понятна необходимость обращения к наименованию Расшифруйте пожалуйста. |
|||
10
tgu82
20.12.13
✎
13:20
|
(8) Спасибо, знак вопроса я действительно не поставил
|
|||
11
Wobland
20.12.13
✎
13:21
|
(9) 1) а почему бы не взять и не отсеять ненужную номенклатуру прямо в подзапросе?
2) наименование - вещь такая, что с ней нужно аккуратней. почему наименование? |
|||
12
tgu82
20.12.13
✎
13:21
|
(8) Мне вообще все сделать заново?
Потому что мне помощь по данному вопросу очень нужна |
|||
13
tgu82
20.12.13
✎
13:23
|
(11) Вот я и не знаю как отсеять - не получается у меня
Наименование вынужден использовать потому что мне надо именно проверить вхождение в него подстроки заданной в парамтерах запроса |
|||
14
Wobland
20.12.13
✎
13:25
|
(13) вот почему именно подстрока?
как вариант ГДЕ Карта в (&СписокНужных) |
|||
15
tgu82
20.12.13
✎
13:27
|
(14) Потому что это размер. То есть я ищу номенклатуру содержащую в наименовании указание размера одежды
|
|||
16
bolobol
20.12.13
✎
13:27
|
Ещё подробней:
ВЫБРАТЬ | ПродажиПоДисконтнымКартам.ДисконтнаяКарта, | МАКСИМУМ(ПродажиПоДисконтнымКартам.Период) КАК ДатаПоследнейПродажи | ИЗ | РегистрНакопления.ПродажиПоДисконтнымКартам КАК ПродажиПоДисконтнымКартам | СГРУППИРОВАТЬ ПО ПродажиПоДисконтнымКартам.ДисконтнаяКарта - это ваш подзапрос, про номенклатуру с наименованием здесь и речи нет. Тогда в чём задача? Добавить в ВЫБРАТЬ "ВЫБОР КОГДА ПродажиПоДисконтнымКартам.Номенклатура.Наименование ПОДОБНО &СтрокаПоиска ТОГДА 1 ИНАЧЕ 0"? |
|||
17
tgu82
20.12.13
✎
13:31
|
(16) Кажется я так пробовал и не пошло.
Просто я убрал все свои комментарии, чтобы легче читался код |
|||
18
tgu82
20.12.13
✎
13:32
|
(16) Ругалась на это:
ПродажиПоДисконтнымКартам.Номенклатура.Наименование Говорит что ее нет в группе ПродажиПоДисконтнымКартам |
|||
19
bolobol
20.12.13
✎
13:39
|
Пользуйтесь конструктором и всё будет в группах.
|
|||
20
Wobland
20.12.13
✎
13:46
|
>проданная номенклатура (измерение регистра накопления ПродажиПоДисконтнымКартам)
и с чего я взял, что измерение типа номенклатура? |
|||
21
bolobol
20.12.13
✎
13:48
|
(20) Да какая разница)) в (0) написано: "Точнее так: Номенклатура.Наименование ..." - и чем бы не являлось - всё одно.
|
|||
22
Wobland
20.12.13
✎
13:52
|
(21) ну я-то предлагал номенклатуру резать в подзапросе, где её нет
|
|||
23
bolobol
20.12.13
✎
14:00
|
(22) Так и я не понимаю, зачем всю номенклатуру выбирать в виде "1/0", чтобы затем строки с 0 удалить из результата...
|
|||
24
Wobland
20.12.13
✎
14:00
|
(23) ээ... присоединяюсь
|
|||
25
bolobol
20.12.13
✎
14:01
|
И в любом случае - задача ТС от наших непониманий не меняется, а Миелофон - наше всё))
|
|||
26
tgu82
20.12.13
✎
14:01
|
(22,23) Я пробовал номенклатуру резать в подзапросе. Мне главное потом по верхнему запросу отсечь в условии
|
|||
27
bolobol
20.12.13
✎
14:03
|
(26) Да мы не против! Измерение наверх-то получилось выбрать?
|
|||
28
tgu82
20.12.13
✎
14:03
|
(27) Вот как раз и не получилось
|
|||
29
tgu82
20.12.13
✎
14:05
|
(24,27) мне нужны те карты, по которым продавалась номенклатура содержащая в наименовании нужную мне подстроку
|
|||
30
Wobland
20.12.13
✎
14:06
|
(28) чтобы что-то сделать с номенклатурой (поиметь твой 0 или 1 хотя бы) нужна номенклатура, правда? а у тебя её в подзапросе нет
|
|||
31
Wobland
20.12.13
✎
14:07
|
(29) берёшь таблицу продаж, соединяешь её с таблицей карт, выкидываешь лишнее
|
|||
32
tgu82
20.12.13
✎
14:08
|
(30) Так я и спрашиваю как раз о том как правильно мне вставить проданную номенклатуру в подзапрос
|
|||
33
tgu82
20.12.13
✎
14:09
|
(31) Регистр.ПродажиПоДисконтнымКартам.Номенклатура Как ПродажиПоДисконтнымКартамНоменклатура - не пропускает почему-то
|
|||
34
Мимохожий Однако
20.12.13
✎
14:15
|
Ты бы показал свой запрос, которые не получается. Народ бы подрихтовал.
|
|||
35
tgu82
20.12.13
✎
14:17
|
(34) Сейчас попробую. Мне же номенклатура не нужна. Мне только нужна проверка на вхождение. Весь запрос или только эту часть?
|
|||
36
Мимохожий Однако
20.12.13
✎
14:17
|
Кидай весь запрос, не стесняйся
|
|||
37
Мимохожий Однако
20.12.13
✎
14:19
|
Возможный план.
В пакетном запросе: 1.Нужная номенклатура 2.Дата продаж из регистра с вложенным запросом из 1. |
|||
38
tgu82
20.12.13
✎
14:26
|
(Выбрать ВЫБОР КОГДА ПродажиПоДисконтнымКартам.Номенклатура.Наименование ПОДОБНО &СтрокаПоиска ТОГДА 1 ИНАЧЕ 0 Конец) Как ЭтотРазмер
Ругается |
|||
39
tgu82
20.12.13
✎
14:28
|
ВЫБОР КОГДА ПродажиПоДисконтнымКартам.Номенклатура.Наименование ПОДОБНО &СтрокаПоиска ТОГДА 1 ИНАЧЕ 0 Конец Как ЭтотРазмер
И так тоже ругается |
|||
40
tgu82
20.12.13
✎
14:34
|
|
|||
41
tgu82
20.12.13
✎
14:39
|
(37) Вот такой вот запрос и пока что мои попытки вставить туда поле которому будет присвоено значение либо 0 либо 1 в зависимости от выполнения фильтра по номенклатуре - не увенчались успехом
|
|||
42
tgu82
20.12.13
✎
14:40
|
(37) А мне надо именно в подзапрос1 это вставлять
|
|||
43
bolobol
20.12.13
✎
14:42
|
Так ясен пень, что ругается. Откуда текст-то родился, конструктор его даже брать отказывается, не то что записать такое!
Во первых: (Выбрать ВЫБОР КОГДА ПродажиПоДисконтнымКартам.Номенклатура.Наименование ПОДОБНО &СтрокаПоиска ТОГДА 1 ИНАЧЕ 0 Конец) Как ЭтотРазмер Зачем слово "Выбрать"? Во вторых: СГРУППИРОВАТЬ ПО ПродажиПоДисконтнымКартам.ДисконтнаяКарта - А где "по ЭтотРазмер"? - оно же тоже выбрано, а в группировках не учавствует. И в третьих, где-то цать постов назад вы сами об этом писали!!! |
|||
44
tgu82
20.12.13
✎
14:45
|
(43)ВЫБОР КОГДА ПродажиПоДисконтнымКартам.Номенклатура.Наименование ПОДОБНО &СтрокаПоиска ТОГДА 1 ИНАЧЕ 0 Конец Как ЭтотРазмер - это же просто поле для Подзапрос1 или нет? Зачем здесь нужна группировка?
|
|||
45
bolobol
20.12.13
✎
14:51
|
(44) Верно! А зачем тогда про ГРУППИРОВКИ для подзапрос1 написано?
|
|||
46
tgu82
20.12.13
✎
14:51
|
43)
| ГДЕ ПродажиПоДисконтнымКартам.Номенклатура.Наименование ПОДОБНО &СтрокаПоиска | СГРУППИРОВАТЬ ПО ПродажиПоДисконтнымКартам.ДисконтнаяКарта,ЭтотРазмер) | КАК Подзапрос1 Ругается что нет такого поля ЭтотРазмер |
|||
47
bolobol
20.12.13
✎
14:52
|
Последний раз повторю, и всё: Используйте конструктор запросов! Язык самостоятельно не придумаете.
|
|||
48
tgu82
20.12.13
✎
14:54
|
(44) | МАКСИМУМ(Подзапрос1.ДатаПоследнейПродажи) КАК ДатаСамойПоследнейПродажи
Вот для этого используется Подзапрос1 |
|||
49
tgu82
20.12.13
✎
14:55
|
(47) Подскажите как правильно написать. Для конструктора запроса все равно нужно знать как!!! А я как раз и не знаю
|
|||
50
bolobol
20.12.13
✎
14:59
|
Конструктор сам напишет, для того и конструктор.
|
|||
51
bolobol
20.12.13
✎
15:01
|
И
МАКСИМУМ(Подзапрос1.ДатаПоследнейПродажи) КАК ДатаСамойПоследнейПродажи - я бы поправил на "ДатаСамойПоследнейПродажиВРазрезеКартИЕдиницыИлиНуляОтНоменклатуры" - ибо так оно на самом деле будет |
|||
52
tgu82
20.12.13
✎
15:02
|
(51) Перевариваю
|
|||
53
bolobol
20.12.13
✎
15:04
|
Конструктор запустите, удалив лишнее про номенклатуру - добавите в самом конструкторе
|
|||
54
bolobol
20.12.13
✎
15:07
|
(52) А это в том, что функции работают только в группах _по всем выбранным полям_, что означает, что на каждую отдельную карту, вкупе с 0 по номенклатуре и, отдельно, вкупе с 1 по номенклатуре - получите максимальную дату.
Карта1, 0, макс = вчера Карта1, 1, макс = позавчера Карта2, 0, макс = полгоданазад Карта2, 1, ... и т.д. |
|||
55
tgu82
20.12.13
✎
15:09
|
(54) Ага, вот это я понял. И мне это не надо
|
|||
56
tgu82
20.12.13
✎
15:12
|
(54) Вот засада. Получается что я не могу получить для карты однозначную пару ДатаПоследнейПродажи и вхождение в фильтр по номенклатуре (или невхождение)
|
|||
57
bolobol
20.12.13
✎
15:15
|
Итого, вырисовывается задача: найти по каждой карте последнюю продажу и узнать, по каким картам в последних продажах были нужные наименования номенклатуры, так?
|
|||
58
MKZM
20.12.13
✎
15:18
|
Условие на изменение это :
update (//////) where (///////////////// Вопрос в чем? |
|||
59
tgu82
20.12.13
✎
15:18
|
(57) Не совсем так. На выходе мне нужна таблица без записей для карт, не прошедших фильтр по номенклатуре
|
|||
60
MKZM
20.12.13
✎
15:20
|
(59) А почему "На выходе мне нужна таблица без записей для карт" представляет проблемы?
|
|||
61
tgu82
20.12.13
✎
15:34
|
(60) Проблемы видимо из-за того что у меня два левых соединения.
|
|||
62
tgu82
20.12.13
✎
15:38
|
(57) Итого, вырисовывается задача: найти по каждой карте последнюю продажу и узнать, по каким картам в последних продажах были нужные наименования номенклатуры, так?
Неа. Меня интересуют даты последней продажи сами по себе а вхождение в фильтр хотя бы по одной продаже само по себе |
|||
63
tgu82
20.12.13
✎
15:39
|
(57) Просто если Дата последней продажи пустая, то и продаж не было вообще и номенклатуры нема никакой
|
|||
64
bolobol
20.12.13
✎
15:47
|
1. В данном регистре не может быть пустая дата.
2. Даты (во множественном числе) последней продажи не существуют в количестве более одной. Это будет последняя продажа по какой-то карте, если по картам были продажи. 3. А про вхождение чего-то в некий фильтр из продаж - вообще не смог ассоциировать с предложенным в (0) отчётом Я в растерянности 00 |
|||
65
bolobol
20.12.13
✎
15:54
|
А с учётом (59) - ясно, что должно быть приоритетней: сначала последняя продажа по карте, затем фильтр по номенклатуре. Из этого следует, что отбора нужно два: Один по последней продаже по карте (ваш подзапрос1), второй по полному соединению с продажами номенклатуры по выбранным дате, карте, номенклатура, где выбор только уникальных карт. Счастье возможно!
|
|||
66
tgu82
20.12.13
✎
15:54
|
(64) Первое левое соединение внимает продажи за указанный период и количество продаж а второе левое соединение вынимает вообще дату последней продажи по карте и вот мне еще надо добавить сюда проверку на то продавалась ли по данной карте номенлкатура соответствующая условию
|
|||
67
tgu82
20.12.13
✎
15:56
|
(65) Карта ДатаПоследнейПродажи ЭтотРазмер
1111 02.05.2013 0 1122 08.02.2012 1 |
|||
68
tgu82
20.12.13
✎
16:01
|
(65) И затем через ГДЕ убираются те в которых 0
|
|||
69
tgu82
20.12.13
✎
16:04
|
(65) второй по полному соединению с продажами номенклатуры по выбранным дате, карте, номенклатура
Да для фильтра по номенклатуре дата по фиг |
|||
70
bolobol
20.12.13
✎
16:09
|
Не-не - сотню не наберёшь. Ответ в 65. В 66 некий набор слов. 67 таблица полуответа из 65. В 68 опять задача о превращении 67 в 65. В 69 исключающее условие решения в 65. Это замкнутый круг))
|
|||
71
tgu82
20.12.13
✎
16:10
|
(70) Да почему
Карта ДатаПоследнейПродажи ЭтотРазмер 1111 02.05.2013 0 1122 08.02.2012 1 1232 "" 0 |
|||
72
tgu82
20.12.13
✎
16:15
|
(70) А почему не левое соединение?
|
|||
73
Аннушка
20.12.13
✎
16:38
|
если я верно поняла задачу, то подзапрос, на мой взгляд, должен быть примерно таким:
выбрать ПродажиПоДисконтнымКартам.ДисконтнаяКарта, ПродажиПоДисконтнымКартам.Период из РегистрНакопления.ПродажиПоДисконтнымКартам.СрезПоследних(&ДатаАкутальности, ДисконтнаяКарта в(выбрать различные Продажи.ДисконтнаяКарта из РегистрНакопления.ПродажиПоДисконтнымКартам КАК Продажи где Продажи.Номенклатура.Наименование подобно &СтрокаПоиска)) как ПродажиПоДисконтнымКартам выбрали нужные карты - те по которым были продажи по нужной номенклатуре и запихунли эти карты в условие среза, на выходе имеем дату последней продажи по каждой карте, по которой была продана хотябы одна нужная номенклатура, при этом эта последняя продажа не обязательно по номенклатуре из условия |
|||
74
V01tk2010
20.12.13
✎
16:53
|
Срез по регистру накопления порадовал
|
|||
75
tgu82
20.12.13
✎
18:53
|
(73,74) Вот в семерке я бы сделал такую штуку довольно-быстро и главное все понятно с точки зрения таблиц и запросов к ним правда в алгоритмическом программном коде
|
|||
76
Wobland
20.12.13
✎
18:55
|
(75) надо учить себя мыслить реляционно
|
|||
77
tgu82
20.12.13
✎
19:00
|
(75)
Не отвлекаясь на частности 1. Берем все карты 2. Прицепляем к ним сумму продаж за указанный период и количество документов продажи 3. Прицепляем к ним дату последней продажи за все время работы магазина 4. берем всю номенклатуру проданную за все время работы магазина по регистру продажи и добавляем к главной таблице поле полученное таким образом: по каждой карте из главной таблицы запроса смотрим проданную номенклатуру и если она попала в фильтр по номенклатуре, то поле это=0 или поле это=1 5. Очищаем главную таблицу запроса от карт по которым товар из фильтра не продавался |
|||
78
tgu82
20.12.13
✎
19:06
|
(76) вот пункт 4-ый меня и интересует. и мне кажется что здесь будет обычное левое соединение с Выбор Когда истина то 1 иначе 0 конец как ПроверкаУсловия и потом фильтрация уже готовой таблицы по этого полю
|
|||
79
tgu82
20.12.13
✎
19:37
|
(76) Получается что я получаю не одно значение для карты а несколько то есть
Карта Номенклатура Проверка 11222 товар1 1 11222 товар2 0 Левое соединение Регистр.ПродажиПоДисконтнымКартам.Обороты(,,Регистратор,Номенклатура В Список) Как РегПродКарт ПО Карты.Ссылка=РегПродКарт.ДисконтнаяКарта А дальше можно по сумме (если сумма таких продаж>0 значит 1 иначе 0) |
|||
80
tgu82
21.12.13
✎
17:50
|
Всем большое спасибо.
Все получилось, местами разобрался :((( А вот как бы мне не по одному значению фильтр делать а по нескольким? Через временную таблицу? |
|||
81
tgu82
23.12.13
✎
08:39
|
Всех с наступающим. Все у меня получилось. В т.ч. и с временными таблицами
|
|||
82
Аннушка
23.12.13
✎
09:16
|
ох, да((((
вот я облажалась то... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |