Statistikk i Mikromarc 2 - Filter

Fra Mikromarc Wiki
Hopp til navigeringHopp til søk

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.