Cryogenic1981:Pai trebuie sa filtrez tabela CompanyRelations in functie de tabela Company care e filtrata dinamic, adica nu pot pune conditii de genul IN (1,2) pentru ca aste e filtrare statica.
Aici s-ar putea folosi o table valued function care sa intoarca o lista de ID-uri de Company, insa e o problema daca fac asa, adica la prima sincronizare totul merge ok, dar cand se shimba filtrul pe tabela Company (nu se sqhimba query-ul ci se doar se filtreaza diferit in functie de context), tabela CompanyRelations nu se mai filtreaza, ramane cu acelasi filtru.
Încearcă să indici faptul că funcţia respectivă este nondeterministă inserând în codul sursă al acesteia, apelul unei functii nondeterministe sistem cum ar fi GETDATE().
Dacă foloseşti acea funcţie care returnează o tabelă, încearcă să modifici tipul joncţiunii în CROSS/OUTER APPLY:
CREATE FUNCTION FunctiaPestelui(@p TINYINT)
RETURNS TABLE
RETURN ( SELECT POWER(10,@p) AS ID )
GO
SELECT *
INTO TabelaPestelui
FROM
(
SELECT 10 AS ID,'B' AS Nume,1 AS Nr
UNION
SELECT 100, 'C', 2
UNION
SELECT 3333, 'D', 3
UNION
SELECT 10000, 'E', 4
UNION
SELECT 555555, 'F', 5
) AS Sursa
--OK
SELECT *
FROM TabelaPestelui AS TP
CROSS APPLY dbo.FunctiaPestelui(TP.Nr) AS T2
WHERE TP.ID = T2.ID
--Eroare
SELECT *
FROM TabelaPestelui AS TP
INNER JOIN dbo.FunctiaPestelui(TP.Nr) AS T2
ON TP.ID = T2.ID