Itgenlic127:igenqtl056: Invantive Query tool error - SQL joins

SQL query welke dagelijks loopt op mijn pc crasht indien collega deze probeert uit te voeren met melding:

itgenlic127: the invantive sql provider of this product does not allow the use of sql-joins

Hoe lossen we dit op?

Invantive Query Tool versie 20.01.148-PROD+1901 (L58344926)

Welke query veroorzaakt deze melding?

use all

local define OUTPUT_PATH "C:\Dropbox\Team OFFICE\01 - Finance\07 - Data\03.Exact\Purchase"

SELECT distinct
PE.DivisionShortName, PEL.GLAccountCode, PE.Status, PE.StatusDescription, PE.Type, PE.TypeDescription, PE.InvoiceNumber,PE.Created, PE.EntryDate, 
PE.Currency,PEL.VATPercentage,
PIL.LineNumber, PRJ2.Code, PIL.CostCenter, PIL.CostUnit, items.Code as itemCode,PIL.Unit, PIL.ItemUnit, PIL.UnitPrice, PIL.Quantity, PIL.Amount, PIL.VATAmount,
PRJ2.AccountCode,
ACC.Country, ACC.IsSales, ACC.PaymentConditionSales
FROM ExactOnlineREST.PurchaseEntry.PurchaseEntries PE
LEFT OUTER JOIN ExactOnlineREST.PurchaseEntry.PurchaseEntryLines PEL ON ( PE.EntryID = PEL.EntryID)
LEFT OUTER JOIN ExactOnlineREST.Purchase.PurchaseInvoices purInv ON ( PE.InvoiceNumber = purInv.EntryNumber AND purInv.DivisionShortName ='1' )
LEFT OUTER JOIN ExactOnlineREST.Purchase.PurchaseInvoiceLines PIL ON ( purInv.ID = PIL.InvoiceID AND PIL.DivisionShortName ='1' )
LEFT OUTER JOIN ExactOnlineREST.Project.Projects PRJ1 ON (PEL.Project = PRJ1.ID)
LEFT OUTER JOIN ExactOnlineREST.Project.Projects PRJ2 ON (PIL.Project = PRJ2.ID)
LEFT OUTER JOIN ExactOnlineREST.Logistics.Items items ON (PIL.Item = items.ID)
LEFT OUTER JOIN ExactOnlineREST.CRM.Accounts ACC ON (PRJ2.AccountCode = ACC.Code AND ACC.IsSales = 'True' AND ACC.DivisionShortName = '1')
WHERE PE.DivisionShortName ='1' AND PE.ReportingYear = '2021' and PEL.GLAccountCode = '603000'
ORDER BY CREATED desc, InvoiceNumber desc, itemCode asc

local export results as "${OUTPUT_PATH}\PI1.xlsx" format xlsx include technical headers

Het betreft een query op Exact Online tabellen. Waarschijnlijk is de verkeerde licentiesleutel gebruikt, namelijk de gratis versie. Die ondersteunt geen joins. Advies is om de eigen licentiesleutel aan te brengen zoals beschreven op:

Verder suggestie om de query te optimaliseren door:

  • opmaakinstructies te volgen op Quality through SQL Coding Standards,
  • niet filteren op DivisionShortName maar op Division,
  • elke join uit te breiden met een filter op gelijke divisies,
  • rapportagejaar als getal te noteren en zo server-side filtering mogelijk te maken.

Zie bijvoorbeeld Optimalisatie API calls zoals met Exact Online.

Daarnaast kan het verstandig zijn om over te stappen op de *Bulk of nog beter *Incremental tabellen voor bijvoorbeeld Items en Accounts t.b.v. hogere prestaties en minder API calls. Zie bijvoorbeeld Snel en met minder API-calls Exact Online uitlezen met de incrementele "sync API"-tabellen.