Родственный запрос Родительский ребенок Отношения - PullRequest
0 голосов
/ 27 сентября 2018

Я пытался получить данные из Contract, ContractDetail, ContractItem и InventoryItem в общем запросе.Итак, после сложения всех 4 таблиц я создал отношения, как показано ниже.

enter image description here

Отношения между Contract и ContractDetail в порядке.И теперь, так как ContractDetail использует ContractItemID, я установил отношения, как показано ниже.Но это выдает мне ошибку вот так.

enter image description here

И, глядя на трассировку стека, я обнаружил, что сгенерированный запрос выглядит так:

DECLARE @P0 SmallDateTime(4) SET @P0='9/27/2018 12:00:00 AM' DECLARE @P1 nvarchar(MAX) SET @P1='0' SELECT COUNT(*) 
FROM ( 
    [Contract] InnerQuery_Contract 
    INNER JOIN ( 
        [ContractDetail] InnerQuery_ContractDetail_ContractDetail 
        INNER JOIN [Contract] InnerQuery_ContractDetail_Contract ON [InnerQuery_ContractDetail_Contract].CompanyID IN (1, 3) AND 32 = SUBSTRING([InnerQuery_ContractDetail_Contract].CompanyMask, 1, 1) & 32 AND [InnerQuery_ContractDetail_Contract].[DeletedDatabaseRecord] = 0 AND [InnerQuery_ContractDetail_ContractDetail].[ContractID] = [InnerQuery_ContractDetail_Contract].[ContractID] AND [InnerQuery_ContractDetail_ContractDetail].[RevID] = [InnerQuery_ContractDetail_Contract].[RevID] 
        LEFT JOIN 
            [ContractDetail] InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt 
         ON [InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt].[ContractID] = [InnerQuery_ContractDetail_ContractDetail].[ContractID] AND [InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt].[LineNbr] = [InnerQuery_ContractDetail_ContractDetail].[LineNbr] AND [InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt].[RevID] = [InnerQuery_ContractDetail_Contract].[LastActiveRevID] AND [InnerQuery_ContractDetail_ContractDetailExt_ContractDetailExt].CompanyID = 3 
    ) ON [InnerQuery_Contract].[ContractID] = [InnerQuery_ContractDetail_ContractDetail].[ContractID] AND [InnerQuery_ContractItem].[ContractItemID] = [InnerQuery_ContractDetail_ContractDetail].[ContractItemID] AND [InnerQuery_ContractDetail_ContractDetail].CompanyID = 3 
    INNER JOIN [ContractItem] InnerQuery_ContractItem ON [InnerQuery_ContractItem].CompanyID = 3 AND [InventoryItem].[inventoryID] =  [InnerQuery_ContractItem].[RecurringItemID] 
) 
WHERE [InnerQuery_Contract].CompanyID IN (1, 3) AND 32 = SUBSTRING([InnerQuery_Contract].CompanyMask, 1, 1) & 32 AND [InnerQuery_Contract].[DeletedDatabaseRecord] = 0 AND [InnerQuery_Contract].[UsrLockDate] < @P0 AND (CASE WHEN ([InnerQuery_Contract].[BaseType] = 'T' OR [InnerQuery_Contract].[BaseType] = 'R') THEN CONVERT (BIT, 1) ELSE CONVERT (BIT, 0) END) = @P1 OPTION(OPTIMIZE FOR UNKNOWN) 

Итак, существует проблема с именем псевдонима для таблицы в запросе.Итак, как мне решить эту проблему?

Спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

Объединения в Acumatica работают точно так же, как в SQL.Сначала создайте запрос в SQL и получите результат относительно того, что вам нужно, а затем попробуйте построить его в Generic Inquiry.

Кроме того, я не вижу каких-либо отношений между Контрактами и Инвентаризацией.Пожалуйста, объясните, что вы пытаетесь получить.

Вот как вы должны объединить свои столы в общем запросе

enter image description here

...