Niniejszy temat zawiera przykładowe zapytania SQL, które obowiązują dla raportowania w produkcie IBM® Enterprise Records. Te przykłady są oparte na szablonach IBM Enterprise Records Crystal Report, które są dostępne w produkcie.
To zapytanie zwraca zdarzenia kontrolowane, jakie występują w instancjach kategorii akt znajdujących się w określonym węźle kartoteki akt oraz w określonym oknie czasowym:
SELECT rc.PathName, ra.DateLastModified, ra.LastModifier, ra.AuditActionType
FROM RMAudit ra
INNER JOIN RecordCategory rc ON ra.SourceObjectId = rc.Id
WHERE ra.DateLastModified >= 20090101T000000Z AND ra.DateLastModified <= 20090131T000000Z
AND rc.This INSUBFOLDER '/Records Management/File Plan'
Poniższe zapytanie zwraca czynności kontrolowane przez konkretnego użytkownika względem akt znajdujących się w konkretnym miejscu w kartotece akt, w trakcie odpowiedniego okna czasowego:
SELECT ra.DateLastModified, ra.LastModifier, ra.AuditActionType, ri.DocumentTitle, rmf.PathName
FROM ((RMAudit ra INNER JOIN RecordInfo ri ON ra.SourceObjectId = ri.Id)
INNER JOIN ReferentialContainmentRelationship RCR on ri.This = rcr.Head)
INNER JOIN RMFolder rmf ON rcr.Tail = rmf.This
WHERE ra.DateLastModified >= 2009-01-01 AND ra.DateLastModified <= 2009-01-12
AND ra.LastModifier = 'rangelj'
AND ri.This INFOLDER '/Records Management/File Plan/Cat1'
Poniższe zapytanie zwraca foldery akt, jakie znajdują się w określonym węźle kartoteki akt i zostały utworzone przez konkretnego użytkownika w konkretnym oknie czasowym:
SELECT rf.PathName, rf.DateCreated, l.LocationName As HomeLocation
FROM RecordFolder rf
LEFT OUTER JOIN Location l ON rf.HomeLocation = l.This
WHERE rf.DateCreated >= 2009-01-01 AND rf.DateCreated <= 2009-01-31
AND rf.Creator = 'rangelj'
AND rf.This INSUBFOLDER '/Records Management/File Plan'
Należy zwrócić uwagę na użycie lewego zewnętrznego połączenia LEFT OUTER JOIN w celu uwzględnienia nazwy instancji HomeLocation, która może zostać przypisana do konkretnej instancji folderu akt.
SELECT v.DateClosed, v.ReOpenedDate, v.VolumeName
FROM Volume v
WHERE v.DateClosed IS NOT NULL AND v.ReOpenedDate IS NOT NULL
AND v.Parent = OBJECT('{24D91623-6C0A-4DB7-9C87-5C172F4A09D2}')
Należy zwrócić uwagę na zastosowanie - w klauzuli WHERE - bardziej wydajnego porównania Volume.Parent zamiast alternatywnego operatora INFOLDER.
To zapytanie zwraca informacje dotyczące danych harmonogramu rozporządzania z aktami, które korzystają z powiązanego typu akt.
SELECT ds.DisposalScheduleName, a1.ActionType, rc.PathName, rcr.ContainmentName, rt.RecordTypeName
FROM (((( RecordInfo ri INNER JOIN RecordType rt ON ri.AssociatedRecordType = rt.This )
INNER JOIN DisposalSchedule ds ON rt.DisposalSchedule = ds.This )
LEFT OUTER JOIN Action1 a1 ON ri.CurrentPhaseAction = a1.This )
INNER JOIN ReferentialContainmentRelationship rcr ON ri.This = rcr.Head )
INNER JOIN RMFolder rc ON rcr.Tail = rc.This
WHERE ri.IsDeleted = FALSE
Jeśli zapytanie zawiera więcej niż jedno połączenie, wówczas należy zastosować nawiasy w celu odseparowania.
Oto wariant, który zwraca kontenery powiązane z określonym harmonogramem rozporządzania.
SELECT rc.PathName, rc.Aggregation, rc.DateCreated, ds.DisposalScheduleName, A1.ActionType
FROM (RMFolder rc INNER JOIN DisposalSchedule ds ON rc.DisposalSchedule = ds.This)
LEFT OUTER JOIN Action1 a1 ON rc.CurrentPhaseAction = a1.This
WHERE rc.IsDeleted = FALSE AND ds.DisposalScheduleName = 'Sch_PreDefDate'
To zapytanie zwraca akta istotne podlegające rozporządzaniu w określonym czasie:
SELECT ri.VitalRecordNextReviewDate, rc.PathName, rcr.ContainmentName, ri.DateCreated, ri.Creator,
ri.VitalRecordReviewDate
FROM (RecordInfo ri INNER JOIN ReferentialContainmentRelationship rcr ON ri.This = rcr.Head)
INNER JOIN RMFolder rc ON rcr.tail = rc.This
WHERE ri.IsDeleted = FALSE AND ri.IsVitalRecord = TRUE
AND ri.VitalRecordNextReviewDate >= 2008-01-01
AND ri.VitalRecordNextReviewDate <= 2009-12-31
To zapytanie wyszukuje akta, które są powiązane z konkretnym wstrzymaniem w konkretnym okresie. Akta te są również zawarte w konkretnej części kartoteki akt.
SELECT ri.DocumentTitle, ri.DateCreated, rh.HoldName, rhl.DateCreated As HoldEstablishedOn
FROM (RecordHold rh INNER JOIN RecordHoldLink rhl ON rh.This = rhl.Tail)
INNER JOIN RecordInfo ri ON rhl.Head = ri.This
WHERE ri.IsDeleted = FALSE AND rh.HoldName = 'Smith vs. Jones'
AND rhl.DateCreated >= 2008-10-01 AND rhl.DateCreated <= 2008-12-31
AND ri.This INSUBFOLDER ('/Records Management/File Plan/ABC')