Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 отдельные списки зачений в подзапрос  [new]
wweter
Member

Откуда: Севастополь
Сообщений: 34
mssql2000 + php

суть такова - необходимо из журнала выбрать документы (2 части: шапка и табличная часть), удовлетворяющие требованиям, и из табличной части получить коды серийных номеров (строка в которой коды располагаются последовательно по 6 символов), их соответственно использовать для получения значения серийного номера (справочник sn куда передается владелец-товар и код серийного номера).

ниже кратко о таблицах и код. этим кодом вытаскиваются ВСЕ коды серийных номеров из всех документов. в итоге избыточная информация. в идеале для каждого документа используется подзапрос с соответствующими именно ему кодами серийного номера.


j журнал документов
dh заголовок документа (получение контрагента)
dt табличная часть документа (получение товара )
dt1 табличная часть документа для подзапроса (получение строки с кодами серийных номеров)
sn справочник серийных номеров (требует владельца и код)
k контрагент


SELECT k.code as k_code, left(j.DATE_TIME_IDDOC,8) as docdate, j.docno as docno, t.code as t_code, t.descr as t_descr, sn.descr as sn, sn.code
FROM SC3099 sn, DH977 dh, DT977 dt, SC224 k, _1SJOURN j, SC135 t
WHERE 
j.ismark=0 and j.closed&1=1 and j.sp28=0 // проверка документа на удаленность, проведение, упр учет
and j.iddoc=dt.iddoc and j.iddoc=dh.iddoc and left(j.DATE_TIME_IDDOC,8)>='$date_from'  // глубина документов и связи журнала, шапки и табличной части
and dh.sp951=k.id and t.id=dt.sp964 // связь документ шапка с контрагентом, табличной части с товаром
and sn.parentext=t.id  // передаю в справочник серийных номеров вледельца и код серийника
and k.sp3398=1 and k.ismark=0 and k.sp3088=1  // проверка клиента на выгрузку, удаленность, вип
and sn.code IN  // проверка кода серийного номера на принадлежность накладной

(SELECT SUBSTRING(dt1.SP3103,6*number-5,6)  // получение кодов серийных номеров из строки
  FROM master.dbo.spt_values, DT977 dt1
  WHERE type='P' and number BETWEEN 1 AND LEN(dt1.SP3103)/6 
            and j.iddoc=dt1.iddoc  )  // передается номер документа вподзапрос

прошу помочь идеями и кодом.
13 окт 09, 15:11    [7779176]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить