Преобразовать его в заказ на получение товара < /li>
Прекращение в квитанцию о товарах < /li>
Конвертировать заказ на покупку в оценку < /li>
Добавить затраты в оценку < /li>
< /ol>
Код: Выделить всё
PURCHASING_ORDER > GOODS_RECEIPT_ORDER > GOODS_RECEIPT
PURCHASING_ORDER > PURCHASING_VALUATION
PURCHASING_COST > PURCHASING_VALUATION
Логика заключается в том, что менее важный документ связан с более важным, чтобы CTE работал. < /p>
Вот cte: < /p>
Код: Выделить всё
set @documentType = 'PURCHASING_ORDER';
set @documentId = 1;
WITH RECURSIVE
DocumentChainDown AS (
SELECT
documentTypeIdTo documentTypeId,
documentIdTo documentId,
documentTypeIdFrom connectedDocumentTypeId,
documentIdFrom connectedDocumentId
FROM utils_documentConnection
WHERE
documentTypeIdTo = (select id from system_documentType where documentType = @documentType)
AND documentIdTo = @documentId
UNION ALL
SELECT
d.documentTypeIdTo,
d.documentIdTo,
d.documentTypeIdFrom,
d.documentIdFrom
FROM utils_documentConnection d
INNER JOIN DocumentChainDown dc ON
d.documentTypeIdTo = dc.connectedDocumentTypeId
AND d.documentIdTo = dc.connectedDocumentId
),
DocumentChainUp AS (
SELECT
documentTypeIdFrom documentTypeId,
documentIdFrom documentId,
documentTypeIdTo connectedDocumentTypeId,
documentIdTo connectedDocumentId
FROM utils_documentConnection
WHERE
documentTypeIdFrom = (select id from system_documentType where documentType = @documentType)
AND documentIdFrom = @documentId
UNION ALL
SELECT
d.documentTypeIdFrom,
d.documentIdFrom,
d.documentTypeIdTo,
d.documentIdTo
FROM utils_documentConnection d
INNER JOIN DocumentChainUp dc ON
d.documentTypeIdFrom = dc.connectedDocumentTypeId
AND d.documentIdFrom = dc.connectedDocumentId
)
select DocumentChain.*, dtt.documentType
from (
SELECT 'down', dcd.* FROM DocumentChainDown dcd
union all
SELECT 'up', dcu.* FROM DocumentChainUp dcu
) DocumentChain
join system_documentType dtt on dtt.id = DocumentChain.connectedDocumentTypeId
для set @documenttype = 'booksing_valuation'; , мы получаем это:
Подробнее здесь: https://stackoverflow.com/questions/794 ... -hierarchy