Сам себя обманул.
Если товар находится в дочерней подгруппе, относительно какой нибудь из искомых 7-ми групп, то мой скрипт работает корректно. Если товар находится именно в этих 7-ми группах то выбираются ошибочные , лишние записи.
Поделитесь, как можно вытащить все продажи по кассовому документу для товаров, входящих в какие нибудь две группы, с подгруппами, и не входящими в эти же две группы с подгруппами.
Я уже всяко разно перепробовал варианты со своим скриптом, предложите кто нибудь свой вариант ???
t.idclass in (select a.id from sacardclass a
where substr(a.tree,1,instr(a.tree, '.',1)-1) not in ('2','3', '4','5','6','7','8','17','18','19','20','25',
'28','29','30','33','34'))
Это группы первого уровня.
Для второго надо поменять функцию примерно на это: substr(a.tree,1,instr(a.tree, '.',2)-1) (Прости, прямо сейчас не тестировала) И в качестве условия указывать узлы дерева: ('2.1', '2.2')
AlexeyF➤ ...
Я уже всяко разно перепробовал варианты со своим скриптом, предложите кто нибудь свой вариант ???
Код:
select s.*
from smspec s,
(select article from smcard c where c.idclass in(select id from sacardclass t where t.tree like '99.19.%' or t.tree like '99.9.%')) c2
where s.doctype='CS' and s.docid='CS20120210@31'
and s.article=c2.article
или перенести все карточки в конечные группы и тупо перечислить их ID
или - если маркетинговые группы не используете - пометить все нужные группы И подгруппы в нем (я себе вьюшку рисовал, чтобы в отчетах вложенные группы наследовали установку от ближайшей старшей), потом по нему отбирать. один раз назначить ответственного и заставить его помечать группы при необходимости пересмотреть набор групп. но этот вариант лучше для каких-то глобальных выборок зарезервировать, которые весь классификатор должны на ломтики резать.
Добавлено через 6 минут 51 секунду
это были входящие. соответственно, не входящие
where c.idclass NOT in(select id
на втором уровне вложенности селектов.
В том и дело, что перечислять ID всех нужных групп, а их в подгруппах много. Лучше было бы указывать родительскую группу и нормально обрабатывать данные из неё самой и из дочерних.
Меня вот сейчас разбирает любопытство как отбираются карточки у супермага в разделе "карточки". Там мы выбираем группу и получаем список артикулов и из вложенных групп тоже. По идее это то что надо.