Имя: Пароль:
1C
 
Запрос с выбором записей, выбирает почему-то 2
,
0 Coldboy
 
08.10.14
12:21
Здравствуйте. В запросе нужно выбрать строку, ту у которой период больше. Почему выдает в результате обе, хотя период больше у 2. Почему? вот запрос:

"ВЫБРАТЬ
               |    ВЫБОР
               |        КОГДА ЕСТЬNULL(НеПустой.Период, ДАТАВРЕМЯ(1, 1, 1)) >= ЕСТЬNULL(ПустойСклад.Период, ДАТАВРЕМЯ(1, 1, 1))
               |            ТОГДА НеПустой.ЧелКомплект
               |        ИНАЧЕ ПустойСклад.ЧелКомплект
               |    КОНЕЦ КАК ЧелКомплект,
               |    ВЫБОР
               |        КОГДА ЕСТЬNULL(НеПустой.Период, ДАТАВРЕМЯ(1, 1, 1)) >= ЕСТЬNULL(ПустойСклад.Период, ДАТАВРЕМЯ(1, 1, 1))
               |            ТОГДА НеПустой.Коэффициент
               |        ИНАЧЕ ПустойСклад.Коэффициент
               |    КОНЕЦ КАК Коэффициент,
               |    ВЫБОР
               |        КОГДА ЕСТЬNULL(НеПустой.Период, ДАТАВРЕМЯ(1, 1, 1)) >= ЕСТЬNULL(ПустойСклад.Период, ДАТАВРЕМЯ(1, 1, 1))
               |            ТОГДА НеПустой.Период
               |        ИНАЧЕ ПустойСклад.Период
               |    КОНЕЦ КАК Период
               |ИЗ
               |    (ВЫБРАТЬ
               |        ТаблицаСвязиЧелКомплектаСрезПоследних.Период КАК Период,
               |        ТаблицаСвязиЧелКомплектаСрезПоследних.Номенклатура КАК Номенклатура,
               |        ТаблицаСвязиЧелКомплектаСрезПоследних.ЧелКомплект КАК ЧелКомплект,
               |        ТаблицаСвязиЧелКомплектаСрезПоследних.ГотоваяПродукция КАК ГотоваяПродукция,
               |        ТаблицаСвязиЧелКомплектаСрезПоследних.Склад КАК Склад,
               |        ТаблицаСвязиЧелКомплектаСрезПоследних.Коэффициент КАК Коэффициент,
               |        ТаблицаСвязиЧелКомплектаСрезПоследних.Период КАК Период1
               |    ИЗ
               |        РегистрСведений.ТаблицаСвязиЧелКомплекта.СрезПоследних(
               |                &Период,
               |                Номенклатура = &Номенклатура
               |                    И Склад = &Склад) КАК ТаблицаСвязиЧелКомплектаСрезПоследних) КАК НеПустой
               |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               |            ТаблицаСвязиЧелКомплектаСрезПоследних.Период КАК Период,
               |            ТаблицаСвязиЧелКомплектаСрезПоследних.Номенклатура КАК Номенклатура,
               |            ТаблицаСвязиЧелКомплектаСрезПоследних.ЧелКомплект КАК ЧелКомплект,
               |            ТаблицаСвязиЧелКомплектаСрезПоследних.ГотоваяПродукция КАК ГотоваяПродукция,
               |            ТаблицаСвязиЧелКомплектаСрезПоследних.Склад КАК Склад,
               |            ТаблицаСвязиЧелКомплектаСрезПоследних.Коэффициент КАК Коэффициент,
               |            ТаблицаСвязиЧелКомплектаСрезПоследних.Период КАК Период1
               |        ИЗ
               |            РегистрСведений.ТаблицаСвязиЧелКомплекта.СрезПоследних(
               |                    &Период,
               |                    Номенклатура = &Номенклатура
               |                        И Склад = &ПустойСклад) КАК ТаблицаСвязиЧелКомплектаСрезПоследних) КАК ПустойСклад
               |        ПО НеПустой.ЧелКомплект = ПустойСклад.ЧелКомплект";
1 Жан Пердежон
 
08.10.14
12:28
потому что условие отбора прописывается в разделе "ГДЕ"
2 Жан Пердежон
 
08.10.14
12:30
либо добавь еще условие связи не номенклатуре
3 Coldboy
 
08.10.14
12:34
(2) условие отбора ? всмысле 2 выборки из переодических регистров. на номенклатуру добавлял связь
4 Coldboy
 
08.10.14
12:56
up. в чем проблема ?
5 hhhh
 
08.10.14
13:50
ТаблицаСвязиЧелКомплекта какие измерения у регистра? Наверно, забыл про какое-то измерение.
6 Ёпрст
 
08.10.14
13:53
(0) всё в топку.
7 Ёпрст
 
08.10.14
13:56
а так, бери либо максимум, либо минимум, либо первые.. смотря че надо.

А твой запрос не "отсеивает" строки..
если че, case этого не делает
8 Ёпрст
 
08.10.14
13:57
(2) условие связи ему не поможет, у него же фулл джоин :)
9 Килограмм
 
08.10.14
14:00
Так ты считаешь каким образом ты сейчас в запросе вообще фильтруешь (пытаешься отфильтровать) строку с большим периодом?
10 Килограмм
 
08.10.14
14:10
И ещё, как обрабатывается момент, когда периоды будут совпадать и, соответственно, невозможно отобрать больший?
11 Coldboy
 
08.10.14
16:52
(7) блин а вот в типовом похоже запросе, именно отсеивает как-то ...
12 Coldboy
 
08.10.14
16:53
(7) сделал выбрать первые и сортиранул в порядке убывания, то есть брал с наибольшим периодом, но все же меня это смущает )
13 Ёпрст
 
08.10.14
16:53
(11) либо там не полное соединение, либо там группировка, либо там еще что, нам отсюда не видно
14 Ёпрст
 
08.10.14
16:54
(12) чем ?
15 Coldboy
 
08.10.14
17:00
(14) ну не знаю мб есть скрытые ошибки и как то просто все получается и обыденно.
16 Килограмм
 
08.10.14
17:31
(15) это же хорошо, когда просто и обыденно
17 Жан Пердежон
 
08.10.14
18:02
(11) там есть скрытый код запроса - написан белым шрифтом на белом фоне - он всю скрытую магию и делает
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.