Имя: Пароль:
1C
1C 7.7
v7: SQL по разным справочникам
,
0 Lacoster
 
20.06.13
06:37
Всем привет!
Есть справочник наценочная таблица. В нём есть группы по магазинам (иерархия) и оптовая цена. Суть справочника в том что у номенклатуры есть свойства и группы. На примере. Шина в закупе 1000р. Шина принадлежит группе "Грузовые Шины". в наценочной таблице есть такая группа и коэффициент для этой группы 1.2 Получается выставляю цену 1000*1.2=1200. Собственно я переоцениваю Опт. Из наценочной таблицы я достал таблицу из групп товаров и коэффициентов вот так
|SELECT $НаценочнаяТаблица.ГруппаТовара [ГруппаТовара $Справочник]
       |    , $НаценочнаяТаблица.УчБуквы НеУчБуквы
       |    , $ПоследнееЗначение.НаценочнаяТаблица.Коэффициент(НаценочнаяТаблица.ID, :ВыбДата) Коэффициент
       |    , НаценочнаяТаблица.Code Код
       |    , НаценочнаяТаблица.ID [Ссылка $Справочник.НаценочнаяТаблица]
       |    , $НаценочнаяТаблица.ИзПрайса [ИзПрайс $Справочник]
       |,$ВидСправочника36.НаценочнаяТаблица Вид
       |FROM $Справочник.НаценочнаяТаблица AS НаценочнаяТаблица With (NOLOCK)
       |left outer join $Справочник.НаценочнаяТаблица Лайк on НаценочнаяТаблица.PARENTID = Лайк.ID
       |                                                        AND Лайк.Code like '%Опт%'
       |                                                        AND НаценочнаяТаблица.IsMark = 0

Отработало без ошибок. Но мне необходимо наложить ещё одно условие типо
|WHERE
       |$НаценочнаяТаблица.ГруппаТовара=:ВыбГрТовара
Но фишка в том что $НаценочнаяТаблица.ГруппаТовара это просто справочник (т.к. там могут быть не только группы товара (шины грузовые), но и может быть её разные свойства (в общей сложности в этом реквезите хранится около 5 справочников), а :ВыбГрТовара это справочник ГруппыТовара.
Как мне выбрать только то что мне нужно?
1 Lacoster
 
20.06.13
06:39
добавлял ещё одно пересечение, не помогло
|left outer join $Справочник.ГруппаТовара ГруппаТовара on ГруппаТовара.ID=$НаценочнаяТаблица.ГруппаТовара
       |                                                        And ГруппаТовара.ID=  :ВыбГрТовара
2 Rie
 
20.06.13
06:40
(0)
WHERE $НаценочнаяТаблица.ГруппаТовара = :ВыбГрТовара~
3 Lacoster
 
20.06.13
06:43
сработало, но сработало по всей таблице, а мне нужно только из Опта
4 Rie
 
20.06.13
06:44
(3)
WHERE $Лайк.ГруппаТовара = :ВыбГрТовара~
5 Lacoster
 
20.06.13
06:46
Отработало, но ничего не показал. Хотя нужная мне группа в таблице есть
6 Rie
 
20.06.13
06:49
(5) "Опт" - точно в коде, а не в наименовании?
И почему left join, а не inner join?
7 Lacoster
 
20.06.13
06:50
(2) вот это сработало. Но он вывел мне коэффициенты для всех магазинов включая Опт. Вывел 3 результата. Мб уже на это наложить условие что бы коэффициент был именно из опта?
8 pervakovanton
 
20.06.13
06:50
может ССЫЛКА?
9 Lacoster
 
20.06.13
06:51
(6) Опт точно в коде, могу скрин кинуть. А лефт джоин к чему относится? к лайку или к справочнику.ГруппыТовара?
10 Lacoster
 
20.06.13
06:51
(8) что ссылка?
11 Lacoster
 
20.06.13
06:54
Всё, разобрался!
Убрал из условия с пересечением Опт и добавил в Вере
|WHERE
       |$НаценочнаяТаблица.ГруппаТовара=:ВыбГрТовара~
       |AND Лайк.Code like '%Опт%'

Выдал то что нужно. Спасибо Rie за тильду
Основная теорема систематики: Новые системы плодят новые проблемы.