Statistikk i Mikromarc 2 - Filter
Generelt
I Mikromarc 2 Utlånsstatistikk er det fra og med versjon 2.7 også mulig å legge inn filtere på SQL-definisjonene.
Merk at dette er kun for konsulenter og meget avanserte brukere. Vi gir ikke brukerstøtte på dette.
Filtrene virker slik at de erstatter datoer eller legger inn deler av SQL-setninger i skriptene som kjøres.
Filtrene :AddFilterFromDate og :AddFilterToDate erstattes av datoen fra utvalgsfanen når statistikken kjøres. Filtrene må legges inn omgitt av enkle anførselstegn, på samme måte som en fast dato.
De andre filterene legges inn som deler av et utvalg, de kan ikke stå alene. Ved kjøring av statistikkene gir filtrene en del av en select, som starter med AND. Det må derfor legges etter/som avsluting på en WHERE-setning.
Eksempel:
WHERE Marc_Record.Marc_id NOT IN
(SELECT Marc_id FROM Service_History WHERE Service_Time >=
':AddFilterFromDate' AND Service_Time <= ':AddFilterToDate'
:AddFilterUnitOnlyName)
:AddFilter
HUSK: :AddfilterXXX må alltid starte med kolon
Filter
:AddFilterFromDate
Inneholder kun fra-dato på format 'yyyy-mm-dd'
- AddFilterFromDate må stå i enkle anførselstegn.
Eksempel Service_Time >= ':AddFilterFromDate'
:AddFilterToDate
Inneholder kun til-dato på format 'yyyy-mm-dd'
- AddFilterToDate må stå i enkle anførselstegn.
Eksempel Service_Time <= ':AddFilterToDate'
:AddFilterDate
Angir tidsrom. Går mot kolonnen Service_Time (kan derfor ikke brukes mot Marc_Record)
Full sql: AND (Date(Service_Time) >= 'FromDate' AND Date(Service_Time) <= 'ToDate'
:AddFilter
Hovedfilter Det finnes 3 varianter av :AddFilter
- en for Service_History, MarcHist og Service
- en for Marc_Record
- en for Loaner (ser eget avsnitt ’Kjøring mot Lånertabellen’)
Det er laget 3 varianter av dette filteret fordi kolonnennavnene og tilgjengelighet varierer.
:AddFilter mot Service_History, MarcHist og Service
Inneholder alle filtre.
Eksempel
AND (Date(Service_Time) >= '2008-01-01' AND Date(Service_Time) <= '2008-12-31')
AND (Loaner_Group in ( 'T1'))
AND (Service_At_Unit_Name in ('Hovedbibliotek'))
AND (Doctype in (''))
AND Service_History.Marc_Id in (select Marc_Id from control_field where Field_code = 008
AND substr(value,36,3) in ('nob'))
AND Service_History.Marc_Id in (select Marc_Id from control_field where Field_code = 008
AND substr(value,23,1) in ('j', 'k', 'l', 'm', 'n', 'o', 'p', 'v', 'w', 'x','y', 'z', '4', '5', '6') )
AND Service_History.Marc_Id in (select Marc_Id from control_field where Field_code = 008
AND substr(value,34,1) in ('0','l') )
AND (Doc_Grp_Descr in ('Hovedkatalog'))
:AddFilter mot Marc_Record
Inneholder ikke
- Lånergruppe (finnes ikke i Marc_Record)
- Periode
- Enhet
Periode må legges på ved bruke av :AddFilterFromDate og :AddFilterToDate Enhet må legges på ved bruk av :AddFilterUnit
Eksempel
AND (docType_id IN ( select DocType_id from doctype
where Description in ('')) OR (docType_id is null) )
AND Marc_Record.Marc_Id in (select control_field.marc_id
from control_field where Field_code = 008
AND substr(value,36,3) in ('nob'))
AND Marc_Record.Marc_Id in (select control_field.marc_id
from control_field where Field_code = 008
AND substr(value,23,1) in ('a', 'b', '1', '2') )
AND Marc_Record.Marc_Id in (select control_field.marc_id
from control_field where Field_code = 008
AND substr(value,34,1) in ('0','l') )
AND Document_group_id in (select Document_group_id
from Document_group where name in ('Hovedkatalog'))
:AddFilterUnitOnlyName
Går mot kolonnen ”belong_to_unit_name” Full sql: ”AND belong_to_unit_name IN(' + UnitNames + ')”
Brukes mot Service_History. Kan brukes i kombinasjon med :AddFilter
:AddFilterUnit
Går mot kolonnnen ’Belong_To_Unit_Id’ Full sql 'AND Belong_To_Unit_Id IN (SELECT Unit_Id FROM Unit WHERE Name IN (' + UnitNames +')) '
Brukes mot indirekte mot Copy via Marc_Record. Kan brukes i kombinasjon med :AddFilter
Kjøring mot Lånertabellen
Når det kjøres en statistikk mot Loaner legges kun lånergruppe, enhet og språk i :AddFilter Periode må legges inn med :AddFilterFromDate og :AddFilterToDate. De andre filtrene er ikke tilgjengelige.
Eksempel Periode: reg_date >= ':AddFilterFromDate' and reg_date <= ':AddFilterToDate'
AddFilter: AND Group_id in (SELECT Group_id FROM loaner_Group WHERE Grp_code in ('T1')) AND Unit_id in (SELECT unit_id FROM unit WHERE Name in ('Hovedbibliotek')) AND (pref_lang in ('nob'))
Tilgjengelige filtre
Hvilke filtre som skal være tilgjengelig, bestemmes av den tabellen som står først i FROM. Derfor må en av tabellen under være første tabell etter FROM delen:
- Marc_Record
- Service_History
- MarcHist
- Service
- Loaner
Eksempel:
Riktig:
FROM Marc_Record KEY JOIN Copy
FEIL: Denne vil ikke gi noen tilgjengelige filtre:
FROM Copy, Marc_Record
Merk at programmet vil bruke den første FROM-tabellen det finner, selv om selecten er kommentert ut eller det er en sub-select.