Я пытался получить данные из Contract, ContractDetail, ContractItem и InventoryItem в общем запросе.Итак, после сложения всех 4 таблиц я создал отношения, как показано ниже.
Отношения между Contract и ContractDetail в порядке.И теперь, так как ContractDetail использует ContractItemID, я установил отношения, как показано ниже.Но это выдает мне ошибку вот так.
И, глядя на трассировку стека, я обнаружил, что сгенерированный запрос выглядит так:
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)
Итак, существует проблема с именем псевдонима для таблицы в запросе.Итак, как мне решить эту проблему?
Спасибо.