Třídová akce

Kód:
11
Tělo:
SELECT
  AF.RealBOCLSID CLSID,
  AF.FIELDNAME FIELDNAME,
  AF.REFERENCECLSID REFERENCECLSID,
  AF.REFERENCEFIELDNAME REFERENCEFIELDNAME,
  PF.PRPermit_ID PRPermit_ID
FROM
  (
    /* Zde zgrupujeme všechny existující položky ochrany dat, které jsou aktivní */
    SELECT
      A.RealBOCLSID RealBOCLSID,
      A.FIELDNAME FIELDNAME,
      MAX(A.REFERENCECLSID) REFERENCECLSID,
      MAX(A.REFERENCEFIELDNAME) REFERENCEFIELDNAME
    FROM DPPROTECTEDFIELDS A
    JOIN DPDEFINITIONS DPD ON DPD.ID = A.PARENT_ID
    WHERE 
      DPD.PROCESSSUBJECTRIGHTS = 'A' AND
      DPD.DATAPROTECTIONDRIVER_ID = :DPDriver_ID
    GROUP BY A.RealBOCLSID, A.FIELDNAME
  ) AF
LEFT JOIN
  (
    /* Zde zgrupujeme všechny položky ochrany dat, které jsou aktivní, existuje
       na ne v daném aktuálním datu povolenka pro firmu nebo pro osobu. Povolenka
       nesmí být vyloucena ze zpracování. Pokud je povolenek více, vezme se ID
       povolenky, která má nejvyšší hodnotu Datum do. */
    SELECT
      A.RealBOCLSID RealBOCLSID,
      A.FIELDNAME FIELDNAME,
      MAX(A.REFERENCECLSID) REFERENCECLSID,
      MAX(A.REFERENCEFIELDNAME) REFERENCEFIELDNAME,
      MAX(PP.ID) PRPermit_ID
    FROM DPPROTECTEDFIELDS A
    JOIN DPDEFINITIONS DPD ON DPD.ID = A.PARENT_ID
    JOIN (
          SELECT
           MAX(PP4.ID) ID,
           PP4.DEFINITION_ID DEFINITION_ID
          FROM
          (SELECT
             PP2.DEFINITION_ID DEFINITION_ID,
             MAX(PP2.VALIDTODATE$DATE) VALIDTODATE$DATE
           FROM GDPRPROCESSINGPERMITS PP2
             WHERE
               PP2.VALIDFROMDATE$DATE <= :DocDate AND ((PP2.VALIDFROMDATE$DATE = 0) OR (PP2.VALIDTODATE$DATE >= :DocDate)) AND
               PP2.VALIDITYSUSPENDED <> 'A' AND
               ((PP2.PERSON_ID = :Person_ID) OR (PP2.FIRM_ID = :Firm_ID))
             GROUP BY PP2.DEFINITION_ID) PP3
           JOIN GDPRPROCESSINGPERMITS PP4 ON
             (PP3.DEFINITION_ID = PP4.DEFINITION_ID) AND
             (PP3.VALIDTODATE$DATE = PP4.VALIDTODATE$DATE) AND
             ((PP4.PERSON_ID = :Person_ID) OR (PP4.FIRM_ID = :Firm_ID))
           GROUP BY PP4.DEFINITION_ID  
          ) PP ON PP.DEFINITION_ID = DPD.ID
    WHERE
      DPD.PROCESSSUBJECTRIGHTS = 'A' AND
      DPD.DATAPROTECTIONDRIVER_ID = :DPDriver_ID
    GROUP BY A.RealBOCLSID, A.FIELDNAME
  ) PF
  ON (AF.RealBOCLSID = PF.RealBOCLSID) AND (AF.FIELDNAME = PF.FIELDNAME)
  ORDER BY 1, 2

Generated by ABRA Software a.s. 27.10.2021 16:34:08