Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Помогите с запросом

Помогите с запросом
Я
   lanc2233
 
24.01.13 - 23:28
Нужно получить список номенклатуры с дополнительными реквизитами, которые хранятся в регистре сведений.

Пытаюсь так :

ВЫБРАТЬ
    ЗначениеСвойствНоменклатуры.Номенклатура.Ссылка КАК Товар,
    ВЫБОР КОГДА ЗначениеСвойствНоменклатуры.ВидСвойства = &К1
        ТОГДА ЗначениеСвойствНоменклатуры.Значение
    КОНЕЦ КАК К1,
    ВЫБОР КОГДА ЗначениеСвойствНоменклатуры.ВидСвойства = &К2
        ТОГДА ЗначениеСвойствНоменклатуры.Значение
    КОНЕЦ КАК К2,
    ЗначениеСвойствНоменклатуры.ВидСвойства
ИЗ
    Справочник.Номенклатура КАК НОМ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначениеСвойствНоменклатуры КАК ЗначениеСвойствНоменклатуры
        ПО НОМ.Ссылка = ЗначениеСвойствНоменклатуры.Номенклатура
ГДЕ
    НОМ.Ссылка В ИЕРАРХИИ(&Группа)
    И ЗначениеСвойствНоменклатуры.ВидСвойства В(&СпВидСВ)

В итоге получаю на каждую позицию по две строки. В одной заполнено К1, в другой заполнено К2.

Как написать чтобы на одну позицию была одна строка?
 
 
   Classic
 
1 - 24.01.13 - 23:29
Два раза соединять.
   Beduin
 
2 - 24.01.13 - 23:29
К1 и К2 тут ни при чем, видимо в регистре сведений по две записи на каждую номенклатуру
   Beduin
 
3 - 24.01.13 - 23:31
А так тут группировать по номенклатуре
   Fragster
 
4 - 24.01.13 - 23:31
(1)+1. или свернуть и Максимум
   Fragster
 
5 - 24.01.13 - 23:31
(2) ага, одна  - с одним свойством, другая - с другим...
   lanc2233
 
6 - 24.01.13 - 23:33
Да, на каждое допсвойство по одной записи. Так что лучше сделать?
   Fragster
 
7 - 24.01.13 - 23:34
(6) пофиг что
   Classic
 
8 - 24.01.13 - 23:36
(6)
Шикарно в шестом посте спрашивать "так что сделать", учитывая, что в первых 5 ответах было уже два варианта
(4)
А что максимум с нулом даст?
(0)
И вообще, что за привычка писать ВЫБОР без ИНАЧЕ
   lanc2233
 
9 - 24.01.13 - 23:36
Может написать как будет выглядеть блок с соединениями?
   lanc2233
 
10 - 24.01.13 - 23:36
Может = можете
 
 Рекламное место пустует
   Fragster
 
11 - 24.01.13 - 23:37
(8) нул меньше всего
   Fragster
 
12 - 24.01.13 - 23:37
ну и нул можно заменить на 0 или неопределено
   lanc2233
 
13 - 25.01.13 - 00:05
Можете написать как будет выглядеть блок с соединениями?
   Classic
 
14 - 25.01.13 - 00:14
Нужно получить список номенклатуры с дополнительными реквизитами, которые хранятся в регистре сведений.


ВЫБРАТЬ
    ЗначениеСвойствНоменклатуры.Номенклатура.Ссылка КАК Товар,
    ЗначениеСвойствНоменклатуры1.Значение КАК К1,
    ЗначениеСвойствНоменклатуры2.Значение КАК К2,
    ЗначениеСвойствНоменклатуры.ВидСвойства
ИЗ
    Справочник.Номенклатура КАК НОМ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначениеСвойствНоменклатуры КАК ЗначениеСвойствНоменклатуры1
        ПО НОМ.Ссылка = ЗначениеСвойствНоменклатуры1.Номенклатура
И ЗначениеСвойствНоменклатуры1.ВидСвойства = &К1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначениеСвойствНоменклатуры КАК ЗначениеСвойствНоменклатуры2
        ПО НОМ.Ссылка = ЗначениеСвойствНоменклатуры2.Номенклатура
И ЗначениеСвойствНоменклатуры2.ВидСвойства = &К2
ГДЕ
    НОМ.Ссылка В ИЕРАРХИИ(&Группа)
   sapphire
 
15 - 25.01.13 - 00:15
(0) Запрос глупо написан:
ЗначениеСвойствНоменклатуры.ВидСвойства В(&СпВидСВ)
, значит &К1 и &К2 должны принадлежать &СпВидСВ

Если поле ВидСвойства в РегистрСведений.ЗначениеСвойствНоменклатуры инедексировано,
тогда лучше использовать ОБЪЕДИНИТЬ ВСЕ

ЗначениеСвойствНоменклатуры.ВидСвойства в выборке по-любому приведет к множественности, как ни крути.
   sapphire
 
16 - 25.01.13 - 00:16
(14) Это не совсем то...
Но, отчасти так.

Еще раз,
Если поле ВидСвойства в РегистрСведений.ЗначениеСвойствНоменклатуры индексировано, 
тогда лучше использовать ОБЪЕДИНИТЬ ВСЕ
   Classic
 
17 - 25.01.13 - 00:16
(14)
Вот эту фигню
    ЗначениеСвойствНоменклатуры.ВидСвойства

Надо убрать из запроса
   Classic
 
18 - 25.01.13 - 00:17
(16)
Твое ОБЪЕДИНИТЬ ВСЕ одну результирующую строчку никак не даст. А ТС попросил одну
   sapphire
 
19 - 25.01.13 - 00:17
(17) Мы ж не заем, надо ему убрать это или нет
   Classic
 
20 - 25.01.13 - 00:18
(19)
Надо :)
   sapphire
 
21 - 25.01.13 - 00:19
(20) Ну, я, лично, не знаю :)
   sapphire
 
22 - 25.01.13 - 00:19
(18) Потом агрегировать
   sapphire
 
23 - 25.01.13 - 00:20
Подзапрос с Union all & inner join, потом агрегат MAX по K1,K2
   Classic
 
24 - 25.01.13 - 00:22
(23)
Зачем Юнион, если агрегировать можно и то, что написано в (0)?
   sapphire
 
25 - 25.01.13 - 00:23
+(23) в (15)(16) подразумевалось наличие мозга у писателя запроса. Просто идея задействовать индекс.
   lanc2233
 
26 - 25.01.13 - 00:23
Спасибо, работает )
   sapphire
 
27 - 25.01.13 - 00:23
(24) см (23)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует