01.11.2007 15:46
Формирую SQL запрос в Oracle из 1С
Текст запроса:
"select SMSTORELOCATIONS.NAME,SMEXTRACHARGE.ARTICLE, SMEXTRACHARGE.EXTRACHARGE
from sacardclass,SMEXTRACHARGE,SMLOCPRICES,SMSTORELOCATIONS
where SMSTORELOCATIONS.ID = SMLOCPRICES.LOCID
and SMLOCPRICES.PRICETYPE = SMEXTRACHARGE.PRICETYPE"
Только он на этот запрос выдаёт строк десять по одному и тому же магазину и Артикулу (вобщем одинаковых).
Как можно сократить количество одинаковых ответов до 1?
01.11.2007 15:51
А sacardclass там зачем? Вот на количество записей в нем и умножается.

P.S. Используй теги для выделения запросов и текстов программ, пожалуйста. Так все легче...
01.11.2007 15:53
Цитата:
Mtirt А sacardclass там зачем? Вот на количество записей в нем и умножается.

P.S. Используй теги [code][\code] для выделения запросов и текстов программ, пожалуйста. Так все легче...
Спасибо за информацию, блин, не заметила...
P.S. Спасибо за подсказку, по поводу тегов.
01.11.2007 15:59
Если уж действительно нужна группа классификатора в запросе, то надо указать условие объединения таблиц, по какому полю это происходит. Например так:
Код:
 select SMSTORELOCATIONS.NAME,
       SMEXTRACHARGE.ARTICLE,
       smcard.name,
       SMEXTRACHARGE.EXTRACHARGE,
       sacardclass.name
  from sacardclass,smcard, SMEXTRACHARGE, SMLOCPRICES, SMSTORELOCAT IONS
 where SMSTORELOCATIONS.ID = SMLOCPRICES.LOCID
   and SMLOCPRICES.PRICETYPE = SMEXTRACHARGE.PRICETYPE
   and smcard.article=smextracharge.article
   and smcard.idclass=sacardclass.id
01.11.2007 16:16
На самом деле, группа мне не нужна, просто переделывая Запрос на наценку группы, забыла убрать одну таблицу, к котрой обращалась в той.
Но за подсказку спасибо, возможно, пригодится.
Даже, скорее всего, пригодится.
02.11.2007 14:57
Цитата:
ITRubIn На самом деле, группа мне не нужна, просто переделывая Запрос на наценку группы
Я тут в максимизаторе отчет писал - менеджерам надо было наценки по группам вывести, так вот пробовал через функцию smgetextrachargeclass очень долго(20 минут запрос выполнялся по всем группам), если напрямую пытатся из таблицы Smmarkupclass взять наценки на группы, получается быстро, но там только измененные наценки содержатся, то по тем группам, которых нет в таблице Smmarkupclass надо просмтаривать родительскую группу, в результате родилась вьюха, которая показывает все наценки по всем группам.
Код:
create or replace view supermag.mvcardclassextrachage as
select t.id,t.tree,t.pricetype,t.pricename,
nvl(m6.extracharge,nvl(m5.extracharge,nvl(m4.extracharge,nvl(m3.extracharge,nvl(m2.extracharge,nvl(m1.extracharge,m.extracharge)))))) extracharge
from
(
select  d.id,
        d.tree,
        p.id pricetype,
        p.name pricename,
        0 id_parent,
        d1.id id_parent1,
        d2.id id_parent2,
        d3.id id_parent3,
        d4.id id_parent4,
        d5.id id_parent5,
        d6.id id_parent6

from
SUPERMAG.Svcardtreesplit D,
SUPERMAG.Sacardclass D1,
SUPERMAG.Sacardclass D2,
SUPERMAG.Sacardclass D3,
SUPERMAG.Sacardclass D4,
SUPERMAG.Sacardclass D5,
SUPERMAG.Sacardclass D6,
SUPERMAG.SMPRICETYPES P
where
      d1.tree(+)=nvl(d.Item1,'#') and
      d2.tree(+)=nvl(d.Item1,'#')||nvl(d.Item2,'#') and
      d3.tree(+)=nvl(d.Item1,'#')||nvl(d.Item2,'#')||nvl(d.Item3,'#') and
      d4.tree(+)=nvl(d.Item1,'#')||nvl(d.Item2,'#')||nvl(d.Item3,'#')||nvl(d.Item4,'#') and
      d5.tree(+)=nvl(d.Item1,'#')||nvl(d.Item2,'#')||nvl(d.Item3,'#')||nvl(d.Item4,'#')||nvl(d.Item5,'#') and
      d6.tree(+)=nvl(d.Item1,'#')||nvl(d.Item2,'#')||nvl(d.Item3,'#')||nvl(d.Item4,'#')||nvl(d.Item5,'#')||nvl(d.Item6,'#')
) T,
SUPERMAG.SMMARKUPCLASS M6,
SUPERMAG.SMMARKUPCLASS M5,
SUPERMAG.SMMARKUPCLASS M4,
SUPERMAG.SMMARKUPCLASS M3,
SUPERMAG.SMMARKUPCLASS M2,
SUPERMAG.SMMARKUPCLASS M1,
SUPERMAG.SMMARKUPCLASS M
where
(m6.pricetype(+)=T.pricetype and m6.idclass(+)=T.id_parent6) and
(m5.pricetype(+)=T.pricetype and m5.idclass(+)=T.id_parent5) and
(m4.pricetype(+)=T.pricetype and m4.idclass(+)=T.id_parent4) and
(m3.pricetype(+)=T.pricetype and m3.idclass(+)=T.id_parent3) and
(m2.pricetype(+)=T.pricetype and m2.idclass(+)=T.id_parent2) and
(m1.pricetype(+)=T.pricetype and m1.idclass(+)=T.id_parent1) and
(m.pricetype=T.pricetype and m.idclass=T.id_parent) and not m.extracharge is null
У меня правда только 5 групп вложенности у кого больше добавляйте сами..
Часовой пояс GMT +3, время: 06:59.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.