Projekti

Yleinen

Profile

Valmiita SQL-raportteja

Tänne voi tallentaa valmiita SQL-raportteja. Laita raportti olemassa olevien otsikoiden alle tai lisää uusi otsikko, jos mikään ei sovellu tarkoitukseen.

Hea-tilastot

Tilastot Koha-yhteisön Hea-muodossa

Raportilla voi laskea omat tilastot Koha-yhteisön Hea-muodossa, jotta pystyy arvioimaan oman sijoittumisen yhteisön tilastoissa. Käytännössä raportti laskee raportin ottohetkellä kannassa olevat asiakkaat (mukaan lasketaan kaikki, myös virkailijat ja muut), niteet, kuvailutietueet (mukaanlukien osakohteet), tilaukset, lehtitilaukset ja auktoriteetit. Lainat ja varaukset lasketaan koko Koha-historian ajalta, mutta mukana ei ole tällä hetkellä aktiivisia lainoja ja varauksia. Myöskään uusintoja ei lasketa.

Koha-yhteisön tilastopalvelu
https://hea.koha-community.org/

Lisännyt: Anneli Österman
Pvm: 2.1.2020

select 'Asiakkaat' AS 'Tilasto',count(*) AS 'Yhteensä' from borrowers 
UNION 
select 'Niteet',count(*) from items
UNION
select 'Kuvailutietueet',count(*) from biblio
UNION
select 'Lainat',count(*) from old_issues
UNION
select 'Varaukset',count(*) from old_reserves
UNION
select 'Tilaukset',count(*) from aqorders
UNION
select 'Lehtitilaukset',count(*) from subscription
UNION
select 'Auktoriteetit',count(*) from auth_header

Lainat

Anonyymit lainat

Tällä raportilla saadaan selville lainaaja, vaikka hän olisi määritellyt yksityisyysasetuksissa ettei halua lainahistoriaansa näkyviin.
Raporttiin luetaan niteen viivakoodi ja se näyttää kaikki "yksityiset" asiakkaat palautusajan mukaan laskevasti.

select DATE_FORMAT(s.datetime, '%d.%m.%Y %T') as 'Palautusaika',  
CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',bi.biblionumber,'\">',bi.title,'</a>') AS 'Nimeke', 
CONCAT('<a href=\"/cgi-bin/koha/circ/circulation.pl?borrowernumber=',b.borrowernumber,'\">',b.firstname,' ',b.surname,'</a>') AS 'Lainaaja' 
from borrowers b
join statistics s on b.borrowernumber = s.borrowernumber
join items i on i.itemnumber = s.itemnumber
join biblio bi on i.biblionumber = bi.biblionumber
where b.privacy = 2 and s.type = 'return' and barcode=<<barcode>> order by s.datetime desc

Ylen lainat

Lainatilasto Ylen aineistojen lainoista kirjaston ja aikavälin mukaan nimekkeittäin.

SELECT b.author AS 'Tekijä', b.title AS 'Nimeke', ExtractValue(bi.marcxml,'//datafield[@tag="245"]/subfield[@code="n"]') AS 'Osa', 
bi.ean AS 'EAN', bi.publicationyear AS 'Vuosi', i.itype AS 'Aineistolaji', count(s.itemtype) AS 'Lainat'
FROM statistics s
LEFT JOIN items i ON i.itemnumber = s.itemnumber
LEFT JOIN biblioitems bi ON i.biblionumber=bi.biblionumber
LEFT JOIN biblio b ON b.biblionumber=i.biblionumber
WHERE s.datetime >= <<Alkupvm|date>> AND
      s.datetime <= DATE_ADD(DATE(<<Loppupvm|date>>), INTERVAL 1 DAY) AND
      s.type IN ('issue', 'renew') AND
      bi.editionresponsibility like '%yle%' AND
      s.usercode NOT IN ('EITILASTO', 'KAUKOLAINA') AND
      s.branch = <<Kirjasto|branches>>
GROUP BY b.biblionumber
ORDER BY 1,2,3

Ensilainat tunneittain viikonpäivittäin

Laskee ensilainat tunneittain viikonpäivän mukaan valitussa kirjastossa valitulla ajanjaksolla. Raportin tehnyt Pasi Kallinen 2019.

SELECT HOUR(datetime) AS Tunti,
       DAYNAME(datetime) AS Paiva,
       count(*) AS Lainat
FROM statistics
WHERE datetime BETWEEN <<AloitusPvm |date>> AND <<LopetusPvm |date>>
      AND branch=<<Kirjasto|branches>>
      AND type = 'issue'
GROUP BY Paiva, Tunti
ORDER BY WEEKDAY(datetime), Tunti

Asiakkaat

Celia-lainaajat

Celia-aineistoa lainanneiden asiakkaiden lukumäärä aikavälin ja pisteen mukaan. Vaihda 'DAISY'-aineistolajilyhenteen tilalle oma Celia-lyhenne!

SELECT count(distinct s.borrowernumber) as 'Celia-lainaajien lukumäärä'
FROM statistics s
JOIN items i ON i.itemnumber = s.itemnumber
WHERE date(s.datetime) BETWEEN  (@AloitusPvm:= <<AloitusPvm |date>>) AND (@LopetusPvm:= <<LopetusPvm |date>>)
AND convert(s.branch using 'utf8') = (@Kirjastopiste:= <<Kirjastopiste |branches>>)
AND i.itype  = 'DAISY'
AND s.type IN ('issue', 'renew')

Celia-lainaajien määrä vuoden ja kunnan mukaan

Aineistolajia Celian äänikirja (CE) lainanneiden asiakkaiden määrä kuntatasolla ja vuoden mukaan. Vaihda tarvittaessa itemtype vastaamaan omaa aineistolajianne.

Lisännyt: Anneli Österman / OUTI-kirjastot
Aika: 20.8.2019

select count(distinct(borrowernumber)) as Lainaajat
from statistics 
where type in ('issue') 
and branch like <<Kirjoita kirjastolyhenteen alku ja %>> 
and year(datetime)=<<Vuosiluku>>
and usercode not in ('EITILASTO')
and itemtype='CE'

Epäonnistuneet tekstiviestit

Listaa valitulta aikaväliltä viestijonosta ne viestit, jotka on yritetty lähettää tekstiviestinä ja lähetys on epäonnistunut jostain syystä. Listalle tulee asiakkaan nimi, kirjastokortin numero linkkinä asiakastietoon (muokkaa linkkiin oman kimppasi osoite), tekstiviesti numeroon -tieto, status, epäonnistumisen syy, viestin aihe, viestin sisältö, jonoonlisäämisaika ja asiakkaalla olevat viestit (näkee siis, onko hänellä jo huomautus virheellisestä puhnumerosta).

Lisääjä: Anneli Österman / OUTI-kirjastot

SELECT Concat(borrowers.surname, ', ', borrowers.firstname, '<br/>', '<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=',borrowers.borrowernumber,'">',borrowers.cardnumber,'</a>') AS 'Asiakas', borrowers.smsalertnumber AS 'Numero', status AS 'Status', delivery_note AS 'Huomatus', subject AS 'Aihe', content AS 'SMS-viesti', time_queued AS 'Jonotusaika', messages.message AS 'Viesti asiakastiedoissa'
FROM message_queue
LEFT JOIN borrowers ON borrowers.borrowernumber = message_queue.borrowernumber
LEFT JOIN messages ON message_queue.borrowernumber = messages.borrowernumber
WHERE message_transport_type = 'sms' 
AND (status = 'failed') 
AND time_queued >= NOW() - INTERVAL <<Monenko päivän ajalta>> DAY 
ORDER BY time_queued ASC

Ylimääräistä tekstiä sisältävät puhelinnumerot

Hakee kaikki ylimääräistä tekstiä sisältävät puhelinnumerot Kohan borrowers-taulusta. Tekstejä on päätynyt puhelinnumerokenttiin ainakin Pallas-konversioissa. Mahdollisesti myös Origoista.

Lisääjä: Pasi Korkalo / Koha-Suomi
Pvm: 8.1.2019

SELECT CONCAT('<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=', borrowernumber, '">', cardnumber, '</a>') AS borrower, phone, mobile, smsalertnumber FROM borrowers
 WHERE LOWER(phone) REGEXP '.*[a-z].*'
    OR LOWER(mobile) REGEXP '.*[a-z].*'
    OR LOWER(smsalertnumber) REGEXP '.*[a-z].*'

Tarkistuslista, ketkä virkailijat ovat vaihtaneet salasanan vuonna 2020

Raportilla voi tarkistaa, ketkä virkailijat ovat vaihtaneet salasanat vuonna 2020

Lisääjä: Anneli Österman
Pvm: 4.2.2020

select cardnumber,firstname,surname,branchcode from action_logs
JOIN borrowers ON borrowernumber=object
where module='MEMBERS'
and action='CHANGE PASS'
and categorycode='VIRKAILIJA'
and year(timestamp)=2020;

Asiakkaan haku maksun tapahtumanumerolla

Raportilla voi hakea asiakkaan Ceepos-kassan tapahtumanumeron perusteella.

Lisääjä: Anneli Österman
Pvm: 7.4.2020

select Concat('<a href=\"/cgi-bin/koha/members/boraccount.pl?borrowernumber=',a.borrowernumber,'">',a.borrowernumber,'</a>') AS 'Asiakas' 
from accountlines a
JOIN payments_transactions_accountlines pta using (accountlines_id)
where pta.transaction_id=<<Tapahtumanumero>>

Takaajattomat lapsiasiakkaat

Raportilla voi hakea lapsiasiakkaat, joilla ei ole takaajaa.

Lisääjä: Anneli Österman
Pvm: 7.4.2020

SELECT CONCAT('<a href=\"/cgi-bin/koha/members/boraccount.pl?borrowernumber=',a.borrowernumber,'">',a.borrowernumber,'</a>') AS 'Asiakas',branchcode AS 'Asiakkaan kirjasto',dateenrolled AS 'Asiakkaan lisäyspäivä',updated_on AS 'Muokkauspäivä'
FROM borrowers 
WHERE categorycode='LAPSI' 
AND guarantorid is null

Henkilöasiakkaat, joilla takaaja

Raportilla voi hakea henkilöasiakkaat, joilla on takaaja.

Lisääjä: Anneli Österman
Tekijä: Pasi Korkalo
Pvm: 7.4.2020

select concat ('<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=', borrowernumber, '">', coalesce(cardnumber, concat(borrowernumber, ' (borrowernumber)')), '</a>') as Korttinumero, concat(substring(firstname,1,1), '. ', substring(surname,1,1), '.') as Nimikirjaimet, branchcode as Kotikirjasto, categorycode as Asiakastyyppi, concat('<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=',guarantorid,'">',guarantorid,'</a>') as Takaajalinkki, concat(substring(contactfirstname,1,1), '. ', substring(contactname,1,1), '.') as 'Takaajan nimikirjaimet' from borrowers where (contactfirstname is not null or contactname is not null) and categorycode='HENKILO' order by 3

Kirjastokorttinumerottomat henkilöasiakkaat

Raportti listaa henkilöasiakkaat, joilla ei ole kirjastokortin numeroa. Parametriksi valitaan kirjasto.

Lisääjä: Anneli Österman
Pvm: 7.4.2020

select concat ('<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=', borrowernumber, '">',borrowernumber,'</a>') as Asiakas, branchcode as Kotikirjasto
from borrowers
where cardnumber is null
and categorycode='HENKILO'
AND branchcode=<<Valitse kirjasto|branches>>

Asiakkaat, joilla on mahdollisesti virheellinen syntymäaika

Raportti listaa asiakkaat, joiden syntymäaika on ennen 1.1.1920, mukaan ei oteta asiakastyyppiä EITILASTO.

Lisääjä: Anneli Österman
Pvm: 7.4.2020

select concat ('<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=', borrowernumber, '">', coalesce(cardnumber, concat(borrowernumber, ' (borrowernumber)')), '</a>') as Korttinumero,dateofbirth as 'Syntymäaika' 
from borrowers where dateofbirth< '1920-01-01' 
and categorycode != 'EITILASTO' order by 2

Asiakkaiden määrä kirjastoittain

Raportti laskee asiakkaiden määrän kirjastoittain. Mukaan ei tule asiakastyyppejä VIRKAILIJA, AUTOM ja EITILASTO. Näytetään 100 riviä.

Lisääjä: Anneli Österman
Pvm: 9.4.2020

SELECT branchcode AS 'Kirjasto',count(*) AS 'Asiakkaiden määrä' 
FROM borrowers
WHERE categorycode not in ('VIRKAILIJA', 'AUTOM', 'EITILASTO')
GROUP BY branchcode limit 100

Asiakkaat, joiden varausmäärä on lähellä sallittua maksimia

Raportti listaa sellaiset asiakkaat, joilla on varauksia lähellä sallittua maksiamia. Raportti laskee myös asiakkaiden voimassa olevien varausten määrän. Muuta raporttiin HAVING COUNT -kohtaan omalle kirjastolle/kimpalle sopiva luku eli esim. jos maksimi on 100 varausta, niin jokin vähän sitä pienempi luku. Raportissa huomioidaan asiakastyypit HENKILO ja LAPSI.

Lisääjä: Anneli Österman
Pvm: 9.4.2020

SELECT CONCAT('<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=', borrowernumber, '">',b.borrowernumber,'</a>') as 'Asiakas', count(*) as 'varausten määrä'
FROM reserves r
JOIN borrowers b USING (borrowernumber)
WHERE categorycode IN ('HENKILO', 'LAPSI')
GROUP BY borrowernumber
HAVING COUNT(*)>90
ORDER BY 2 DESC

Asiakkaat, joilla on huomautuksia

Raportti listaa kirjastoittain asiakkaat, joilla on huomautuksia.

Lisääjä: Anneli Österman
Pvm: 9.4.2020

SELECT CONCAT('<a href="https://koha.outikirjastot.fi:8080/cgi-bin/koha/members/moremember.pl?borrowernumber=',borrowers.borrowernumber,'">',borrowers.cardnumber,'</a>') AS 'Asiakas',  opacnote AS 'Huomautus'
FROM borrowers 
WHERE opacnote !=''
AND branchcode=<<Valitse kirjasto|branches>>

Varaukset

Tietueen varaushistoria

Listaa valitulta aikaväliltä tietueen varaukset, jotka eivät ole enää voimassa. Voimassa olevat voi katsoa tietueen varauksista.

SELECT o.reservedate, o.branchcode, o.borrowernumber, o.waitingdate, o.expirationdate, i.barcode
FROM old_reserves o
JOIN items i USING (itemnumber)
WHERE o.biblionumber =<<Tietuenumero>>
AND date(o.reservedate) BETWEEN <<Alkupvm|date>> AND <<Loppupvm|date>>
ORDER BY o.reservedate DESC

Nimekkeet, joihin on eniten varauksia

Varausten määrä kannattaa rajata (esim. 50), jotta et saa tulokseksi kaikkia mahdollisia nimekkeitä, joihin on olemassa varaus. Mukaan tulee myös tietueeseen liittyvä nidemäärä. Tuloksessa mukana myös hankinnassa olevat niteet.

Lisääjä: Anneli Österman / OUTI-kirjastot

SELECT concat('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'">',b.title,'</a>') AS Nimeke, b.author AS Tekijä, m.cn_class AS Luokka, m.itemtype AS Aineistolaji, count(h.reservedate) AS 'Varaukset', (select count(*) from items where biblionumber=b.biblionumber) AS 'Niteiden määrä'
FROM biblio b
LEFT JOIN biblioitems m USING (biblionumber)
LEFT JOIN reserves h ON (b.biblionumber=h.biblionumber)
GROUP BY b.biblionumber 
HAVING count(h.reservedate)  >= <<Varauksia vähintään>>
ORDER by Varaukset DESC

Eniten uusia varauksia, top20

Raportilla voi hakea top20-listan teoksista, joihin on tehty eniten varauksia seitsemän viime päivän aikana.

Lisääjä: Anneli Österman / OUTI-kirjastot
Pvm: 25.10.2018

SELECT count(distinct reserve_id) AS 'Varauksia', title AS 'Teos', author AS 'Tekijä', cn_class AS 'Luokka'
FROM (
SELECT b.title, b.author, b.biblionumber, reserves.reserve_id, bi.cn_class
FROM reserves 
left JOIN biblio b ON (reserves.biblionumber=b.biblionumber)
JOIN borrowers ON (reserves.borrowernumber=borrowers.borrowernumber)
JOIN biblioitems bi ON(b.biblionumber=bi.biblionumber)
WHERE DATE(reserves.reservedate) > DATE_SUB(CURRENT_DATE(),INTERVAL 7 DAY) 
      AND DATE(reserves.reservedate) <=CURRENT_DATE()
AND borrowers.categorycode !='EITILASTO'
UNION ALL
SELECT b.title, b.author, b.biblionumber, old_reserves.reserve_id, bi.cn_class
FROM old_reserves 
left JOIN biblio b ON (old_reserves.biblionumber=b.biblionumber)
JOIN borrowers ON (old_reserves.borrowernumber=borrowers.borrowernumber)
JOIN biblioitems bi ON(b.biblionumber=bi.biblionumber)
WHERE DATE(old_reserves.reservedate) > DATE_SUB(CURRENT_DATE(),INTERVAL 7 DAY) 
      AND DATE(old_reserves.reservedate) <=CURRENT_DATE()
AND borrowers.categorycode !='EITILASTO'
 ) AS myholds 
GROUP BY biblionumber 
ORDER BY 1 DESC 
LIMIT 20;

Varauksen tiedot lokilla

Raportilla voi tarkistaa, mitä tietoja varauksesta on tallentunut action_logs-tauluun. Parametreinä käytetään asiakkaan borrowernumberia ja teoksen biblionumberia. Jos varaus on edelleen voimassa, vaihda old_reserves-taulu reserves-tauluksi.

Lisääjä: Anneli Österman
Pvm: 20.3.2019

select * from action_logs where object in (select reserve_id from old_reserves where borrowernumber=<<borrowernumber>> and biblionumber=<<biblionumber>>) and module='HOLDS';

HUOM! Jos haluat tutkia voimassa olevan varauksen tietoja, niin vaihda tauluksi reserves.

Asiakkaan haku poistetun varauksen niteen viivakoodin perusteella

Raportilla voi hakea asiakkaan, jolla oli viimeksi varaus tiettyyn niteeseen. Parametriksi annetaan niteen viivakoodi. Tällä voi hakea, kenelle varaus kuului, jos varaus poistetaan vahingossa palautustilanteessa. Huom! Tieto pitää hakea ennen kuin nide jää kiinni seuraavaan varaukseen ja poistetaan/lainataan. Jos halutaan nähdä useampi varaaja, pitää poistaa "limit 1" tai laittaa suurempi numero siihen.

Lisääjä: Anneli Österman
Pvm: 31.7.2020

SELECT CONCAT('<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=',r.borrowernumber,'" target="_blank">',r.borrowernumber,'</a>') AS 'Asiakas', cancellationdate as 'Varauksen poistopäivä'
from old_reserves r
join items i using (itemnumber)
where i.barcode=<<Niteen viivakoodi>>
order by reserve_id DESC limit 1

Varauslista Finna-muotoon

Raportilla voi hakea varaukset ja tallentaa ne Finnassa näkyvään muotoon. Varausten määrä rajoitettu 25:een, voit muuttaa määrää korvaamalla LIMIT-kohdassa olevan numeron.

Lisääjä: Päivi Knuutinen / Vaara
Pvm: 3.12.2018

SELECT
b.biblionumber AS 'biblionumber',
count(h.reservedate) AS 'Varauksia'
FROM biblio b
LEFT JOIN biblio_metadata m USING (biblionumber)
LEFT JOIN reserves h ON (b.biblionumber=h.biblionumber)
GROUP BY b.biblionumber
ORDER BY Varauksia DESC
LIMIT 25

Varausten noudot päivittäin tunneittain valitulla aikavälillä

Raportilla voi katsoa, miten valitun kirjaston varausten noudot ajoittuvat päivittäin tunneittain valitulla aikavälillä.

Lisääjä: Anneli Österman / OUTI-kirjastot
Pvm: 3.3.2020

SELECT date(s.datetime) as Pvm,hour(s.datetime) as Tunti,count(reserve_id) as 'Yhteensä'
FROM old_reserves o
LEFT JOIN statistics s using (borrowernumber)
WHERE found in ('F', 'W') 
AND date(s.datetime) BETWEEN <<Alkupvm|date>> AND <<Loppupvm|date>>
AND o.branchcode=<<Valitse kirjasto|branches>>
AND waitingdate IS NOT NULL
AND o.itemnumber=s.itemnumber
AND s.type='issue'
GROUP BY date(s.datetime), hour(s.datetime)

Varausten noudot tunneittain valitulla aikavälillä

Raprotilla voi katsoa, miten valitun kirjaston varausten noudot ajoittuvat tunneittain valitulla aikavälillä.

Lisääjä: Anneli Österman / OUTI-kirjastot
Pvm: 3.3.2020

SELECT hour(s.datetime) as Tunti,count(reserve_id) as 'Yhteensä'
FROM old_reserves o
LEFT JOIN statistics s using (borrowernumber)
WHERE found in ('F', 'W') 
AND date(s.datetime) BETWEEN <<Alkupvm|date>> AND <<Loppupvm|date>>
AND o.branchcode=<<Valitse kirjasto|branches>>
AND waitingdate IS NOT NULL
AND o.itemnumber=s.itemnumber
AND s.type='issue'
GROUP BY hour(s.datetime)

Noudettavissa olevat varaukset

Raportilla voi hakea kirjaston mukaan noudettavissa olevat varaukset. Sarakkeina on Varaustunniste, Viimeinen noutopäivä, teoksen nimeke ja niteen viivakoodi. Tiedot järjestetään ensimmäisen sarakkeen mukaan. Jos haluaa, voi ORDER BY -riville lisätä vielä kakkosen, jolloin varaukset järjestetään ensin varaustunnisteen mukaan ja sen sisällä vielä viimeisen noutopäivän mukaan.

Lisääjä: Anneli Österman
Pvm: 9.6.2020

SELECT bo.othernames as 'Varaustunniste',r.expirationdate as 'Viimeinen noutopäivä',b.title as 'Teos',i.barcode as 'Viivakoodi'
FROM reserves r
JOIN borrowers bo ON (r.borrowernumber=bo.borrowernumber)
JOIN biblio b ON (r.biblionumber=b.biblionumber)
LEFT JOIN items i ON (r.itemnumber=i.itemnumber)
WHERE r.branchcode=<<Valitse kirjasto|branches>>
AND r.found='W'
ORDER BY 1

Kokoelma

Niteettömät nimekkeet

Raportilla voi hakea niteettömät nimekkeet. Raportissa annetaan parametriksi aineistolaji. Jos haluat listata kaikki niteettömät kerralla aineistolajista riippumatta, poista raportista alimmainen rivi.

Lisääjä: Anneli Österman / OUTI-kirjastot
Pvm: 3.7.2019

SELECT CONCAT(b.title, ', ', '<br/>', '<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'\">',b.biblionumber,'</a>') AS 'Teos',
bi.itemtype AS 'Aineistolaji', b.biblionumber
from biblio b
LEFT JOIN items i ON b.biblionumber = i.biblionumber
LEFT JOIN biblioitems bi ON bi.biblionumber = b.biblionumber
LEFT JOIN biblio_metadata bm ON bm.biblionumber = b.biblionumber
WHERE ExtractValue(bm.metadata,'//datafield[@tag="773"]/subfield[@code="w"]') = ''
AND i.itemnumber IS NULL
AND bi.itemtype=<<Valitse aineistolaji|itemtypes>>

Weeding tool

"Weeding toolilla" voi tutkia esim. nollalainoja kirjaston, aineistolajin, hyllypaikan mukaan. Tehty Koha Reports Libraryn raportin pohjalta.

Lisääjä: Anneli Österman / OUTI-kirjastot

SELECT CONCAT( '<a href=\"/cgi-bin/koha/cataloguing/additem.pl?biblionumber=', biblio.biblionumber,'\">', 
       items.barcode, '</a>' ) AS 'Viivakoodi', items.cn_sort AS 'Luokka ja pääsana', biblio.title AS 'Nimeke', items.ccode AS 'Kokoelma',
       biblioitems.publicationyear AS 'Julkaisuvuosi', items.dateaccessioned AS 'Viimeksi nähty', items.itype AS 'Aineistolaji', 
       items.issues AS 'Lainat', items.renewals AS 'Uusinnat', (IFNULL(items.issues, 0)+IFNULL(items.renewals, 0)) AS 'Lainat ja uusinnat yhteensä', 
       items.datelastborrowed AS 'Viimeksi lainattu', items.itemlost AS 'Kadonnut', items.onloan AS 'Lainassa', items.damaged AS 'Vaurioitunut', items.itemnotes AS 'Huomautukset'
FROM items
LEFT JOIN biblioitems ON (items.biblioitemnumber=biblioitems.biblioitemnumber) 
LEFT JOIN biblio ON (biblioitems.biblionumber=biblio.biblionumber)
WHERE items.itype= <<Aineistolaji|itemtypes>> AND items.holdingbranch=<<Sijaintikirjasto|branches>> 
      AND items.cn_sort BETWEEN <<Luokka väliltä, alkaen>> AND <<päättyen>>
AND items.location=<<Hyllypaikka|LOC>>
AND items.issues< <<Lainoja vähemmän kuin>>
AND items.datelastborrowed< <<Viimeksi lainattu aikaisemmin kuin|date>>
ORDER BY 10,2

Kadonneet niteet kirjaston ja hyllypaikan mukaan

Raportti listaa kadonneet niteet kirjaston ja hyllypaikan mukaan.

SELECT concat('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'">',b.title,'</a>') AS Nimeke, b.author AS Tekijä, b.serial AS Sarja, b.seriestitle AS Sarjanimeke, i.itemcallnumber AS Signum, i.barcode AS Viivakoodi, i.itype AS Aineistolaji, i.holdingbranch AS Kirjasto, i.datelastseen AS 'Viimeksi nähty', i.itemlost_on AS 'Kadonneeksi merkitty' 
FROM items i
LEFT JOIN biblio b ON (i.biblionumber=b.biblionumber) 
LEFT JOIN authorised_values v ON (i.itemlost=v.authorised_value) 
WHERE i.itemlost != 0 AND i.itemlost = 1 AND v.category='LOST'
AND i.holdingbranch = <<Viimeisin havaintokirjasto|branches>>
AND i.location = <<Hyllypaikka|LOC>>
ORDER BY 7,5

Poistojen apuväline

Lista, jossa on mm. lainamäärät sekä viimeiset havaintopäivät valitun kirjaston, aineistolajin, hyllypaikan ja luokan mukaan. Luokka-kohtaan täytyy jälkimmäiseen laatikkoon laittaa haluttua luokkaa seuraava luokka.

SELECT CONCAT( '<a href=\"/cgi-bin/koha/cataloguing/additem.pl?biblionumber=', biblio.biblionumber,'\">', items.barcode, '</a>' ) AS 'Viivakoodi',
       items.itemcallnumber AS 'Luokka',
       items.ccode AS 'Kokoelma',
       biblio.author AS 'Tekijä',
       biblio.title AS 'Nimeke', 
       ExtractValue(biblio_metadata.metadata,'//datafield[@tag="245"]/subfield[@code="b"]') AS 'Muu nimeke', 
       ExtractValue(biblio_metadata.metadata,'//datafield[@tag="362"]/subfield[@code="a"]') AS 'numero', 
       biblio.copyrightdate AS 'Vuosi',
       items.dateaccessioned AS 'Hankittu',
       items.itype AS 'aineistolaji', 
       items.issues AS 'Lainoja',
       items.renewals AS 'Uusintoja',
       (IFNULL(items.issues, 0)+IFNULL(items.renewals, 0)) AS 'Lainoja_yht.',
       items.datelastborrowed AS 'Viimeksi_lainattu',
       items.datelastseen AS 'Viimeksi_havaittu',
       items.itemlost AS 'Kadonnut',
       items.onloan AS 'Lainassa',
       items.itemnotes AS 'Nidehuomautus'
FROM items
LEFT JOIN biblioitems ON (items.biblioitemnumber=biblioitems.biblioitemnumber) 
LEFT JOIN biblio ON (biblioitems.biblionumber=biblio.biblionumber)
LEFT JOIN biblio_metadata ON (biblio.biblionumber=biblio_metadata.biblionumber)
WHERE
     items.itype = <<Aineistolaji|itemtypes>>
 AND items.homebranch = <<Kirjastopiste|branches>>
 AND items.location = <<Hyllypaikka|LOC>>
 AND items.cn_sort BETWEEN <<Luokka välillä>> AND <<ja>>
ORDER BY items.itemcallnumber

Niteen havaintohistoria statistics-taulussa

Parametriksi annetaan niteen itemnumber.

Tehnyt: Anneli Österman
Pvm: 6.8.2019

select * from statistics where itemnumber=<<Itemnumber>>

Eriparit aineistolajit

Raportti listaa kirjastoittain nimekkeet, joiden aineistolaji poikkeaa kirjaston niteelle asetetusta aineistolajista.

Lisääjä: Anneli Österman
Pvm: 9.4.2020

SELECT CONCAT(b.title, ', ', '<br/>', '<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'\">',b.biblionumber,'</a>') AS 'Teos', bi.itemtype AS 'Teoksen aineistolaji', i.itype AS 'Niteen aineistolaji', i.holdingbranch AS 'Niteen sijaintikirjasto'
ROM biblio b
JOIN biblioitems bi USING (biblionumber)
JOIN items i USING (biblionumber)
WHERE bi.itemtype != i.itype
AND holdingbranch=<<Valitse sijaintikirjasto|branches>>
GROUP BY biblionumber
ORDER BY 4,1

Nimekkeet, joissa on varauksia, mutta ei niteitä

Raportti listaa nimekkeet, joihin kohdistuu varauksia, mutta niillä ei ole yhtään nidettä, joka voisi täyttää varauksen.

Lisääjä: Anneli Österman
Pvm: 9.4.2020

SELECT CONCAT(b.title, ', ', '<br/>', '<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'\">',b.biblionumber,'</a>') AS 'Teos', CONCAT('<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=',borrowers.borrowernumber,'">',borrowers.cardnumber,'</a>') AS 'Asiakas'
FROM reserves
LEFT JOIN biblio b USING (biblionumber)
LEFT JOIN items USING (biblionumber)
LEFT JOIN borrowers USING (borrowernumber)
WHERE reserves.biblionumber NOT IN (select biblionumber from items)

Aineistolajittomat niteet

Raportti listaa niteet, joilla ei ole aineistolajia määritetty.

Lisääjä: Anneli Österman
Pvm: 17.4.2020

SELECT CONCAT('<a href=\"/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=',i.biblionumber,'&itemnumber=',i.itemnumber,'">',i.barcode,'</a>') AS 'Viivakoodi'
FROM items i
WHERE itype IN('NULL', '')

Laskutus

Laskutettavat niteet (OUTI)

Lista niteistä ja asiakkaista, jotka ovat menossa laskutukseen. Ne niteet, joita ei haluta laskuttaa, muokataan niteen muokkauksessa "Ei laskuteta" -tilaan. Kirjastorajaus perustuu kirjastoryhmiin. Jos "Laskutettu"-tila on jotain muuta kuin "6" tai "Ei laskuteta"-tila muuta kuin "8", muuta ne kohtaan "AND i.notforloan not in (6,8)".

Lisääjä: Anneli Österman / OUTI-kirjastot

SELECT 
    p.categorycode AS 'Asiakaslaji',
    concat_ws('', IFNULL(p.surname, ' '), ', ', IFNULL(p.firstname, ' '), '<br>' '<a href="https://koha.outikirjastot.fi:8080/cgi-bin/koha/members/moremember.pl?borrowernumber=',p.borrowernumber,'">',p.cardnumber,'</a>') AS 'Asiakas',
    Concat_ws('', IFNULL(g.surname, ' '), ' ', IFNULL(g.firstname, ' '), '<br/>' '<a href="https://koha.outikirjastot.fi:8080/cgi-bin/koha/members/moremember.pl?borrowernumber=',g.borrowernumber,'">',g.cardnumber,'</a>') AS 'Takaaja',
    Concat_ws(' ',
        IF(LENGTH(p.address),p.address,NULL),
        IF(LENGTH(p.zipcode),p.zipcode,NULL),
        '\n',
        IF(LENGTH(p.city),p.city,NULL)
    ) AS 'Osoite',
    (SELECT attribute FROM borrower_attributes WHERE code = 'SSN' AND borrowernumber = c.borrowernumber) AS SSN,
    Concat_ws(' - ',
        IF(LENGTH(b.author),b.author,NULL),
        IF(LENGTH(b.title),b.title,NULL)
    ) AS 'Teos',
    i.itemcallnumber AS 'Hyllypaikka', 
    Concat('<a href="https://koha.outikirjastot.fi:8080/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=',i.biblionumber,'&itemnumber=',i.itemnumber,'">',i.barcode,'</a>') AS 'Viivakoodi',
    i.replacementprice AS 'Korvaus',
    (TO_DAYS(curdate())-TO_DAYS( date_due)) AS 'Myöhässä' ,
    c.branchcode as 'Lainauspaikka',
    it.description as 'Aineistolaji',    
    i.holdingbranch AS 'Havaintopaikka'
FROM issues c
LEFT JOIN borrowers p ON (p.borrowernumber=c.borrowernumber) 
LEFT JOIN items i ON (c.itemnumber=i.itemnumber) 
LEFT JOIN itemtypes it ON (i.itype = it.itemtype)
LEFT JOIN biblio b ON (i.biblionumber=b.biblionumber) 
LEFT JOIN borrowers g ON (p.guarantorid=g.borrowernumber)
LEFT JOIN branchrelations br ON (c.branchcode = br.branchcode)
LEFT JOIN branchcategories bc ON (br.categorycode = bc.categorycode)
WHERE (TO_DAYS(curdate())-TO_DAYS(date_due)) >= 60
AND bc.categorycode = <<Kirjastoryhmä|branchcategories>>
AND p.categorycode not in ('AUTOM','EITILASTO','VIRKAILIJA')
AND i.notforloan not in (6,8)
GROUP BY i.itemnumber
ORDER BY p.surname, p.firstname

Palautetut laskutetut niteet (OUTI)

Raportilla voi seurata niteitä, jotka on palautettu, mutta ovat edelleen laskutettu-tilassa. Kirjastorajaus perustuu kirjastoryhmiin. Jos Laskutettu-tila on jokin muu kuin "6", muuta se oikeaksi kohdassa "and i.notforloan = 6".

Lisääjä: Anneli Österman / OUTI-kirjastot

select Concat(b.surname, ', ', b.firstname, '<br/>', '<a href="https://koha.outikirjastot.fi:8080/cgi-bin/koha/members/moremember.pl?borrowernumber=',b.borrowernumber,'">',b.cardnumber,'</a>') AS 'Nimi', 
Concat('<a href="https://koha.outikirjastot.fi:8080/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=',i.biblionumber,'&itemnumber=',i.itemnumber,'">',i.barcode,'</a>') AS 'Viivakoodi',
iss.date_due AS 'Eräpäivä', 
iss.branchcode, 
iss.returndate AS 'Palautuspäivä' 
from old_issues iss, items i, borrowers b,
(select i.itemnumber, max(o.issue_id) as issue_id
from old_issues o, items i
where o.branchcode in (select distinct a.branchcode from branchrelations a, branchcategories b where a.categorycode = <<Kirjastoryhma|branchcategories>> and b.show_in_pulldown=0 and a.categorycode = b.categorycode)
and DATE(o.returndate) between DATE(<<Palautuspäiväväli|date>>) and DATE(<<Palautuspäiväväli|date>>)
and i.notforloan = 6
and i.itemnumber = o.itemnumber
group by i.itemnumber) d
where b.borrowernumber = iss.borrowernumber
and i.itemnumber = iss.itemnumber
and iss.issue_id = d.issue_id
and iss.itemnumber = d.itemnumber

Palautetut Ei laskuteta -niteet (OUTI)

Raportilla voi seurata palautettuja "Ei laskuteta" -tilassa olevia niteitä. Kirjastorajaus perustuu kirjastoryhmiin. Jos "Ei laskuteta" -tila on muuta kuin "8", muuta se kohtaan "and i.notforloan = 8".

Lisääjä: Anneli Österman / OUTI-kirjastot

select Concat(b.surname, ', ', b.firstname, '<br/>', '<a href="https://koha.outikirjastot.fi:8080/cgi-bin/koha/members/moremember.pl?borrowernumber=',b.borrowernumber,'">',b.cardnumber,'</a>') AS 'Nimi', 
Concat('<a href="https://koha.outikirjastot.fi:8080/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=',i.biblionumber,'&itemnumber=',i.itemnumber,'">',i.barcode,'</a>') AS 'Viivakoodi',
iss.date_due, iss.branchcode, iss.returndate 
from old_issues iss, items i, borrowers b,
(select i.itemnumber, max(o.issue_id) as issue_id
from old_issues o, items i
where o.branchcode in (select distinct a.branchcode from branchrelations a, branchcategories b 
where a.categorycode = <<Kirjastoryhmä|branchcategories>> and b.show_in_pulldown=0 and a.categorycode = b.categorycode)
and DATE(o.returndate) between DATE(<<Palautuspäiväväli|date>>) and DATE(<<Palautuspäiväväli|date>>)
and i.notforloan = 8
and i.itemnumber = o.itemnumber
group by i.itemnumber) d
where b.borrowernumber = iss.borrowernumber
and i.itemnumber = iss.itemnumber
and iss.issue_id = d.issue_id
and iss.itemnumber = d.itemnumber

Maksut

Ceepos-verkkomaksujen tulot kirjastoittain

Erotellaan kirjastoittain kaikki verkkomaksuista kertyneet tulot. Toimii vain Ceepos-verkkomaksujen kanssa. Ei esim. Finna-Paytrail-maksujen kanssa.

SELECT Verkkomaksutulot, branch, branchcity, branchphone FROM (SELECT CAST(SUM(payments.paid_price_cents)/100.00 as decimal(19,2)) AS Verkkomaksutulot, IF(homebranch IS NULL, user_branch, homebranch) AS branch FROM 
    (SELECT DISTINCT payments_transactions_accountlines.transaction_id, payments_transactions.borrowernumber, status, paid_price_cents, payments_transactions_accountlines.accountlines_id, accountlines.itemnumber, payments_transactions.user_branch FROM payments_transactions, payments_transactions_accountlines, accountlines 
    WHERE payments_transactions.is_self_payment=1 
    AND payments_transactions.transaction_id=payments_transactions_accountlines.transaction_id
    AND payments_transactions.status='paid'
    AND accountlines.accountlines_id=payments_transactions_accountlines.accountlines_id
        AND date(payments_transactions.timestamp) BETWEEN <<Alkupäivä|date>> AND <<Loppupäivä|date>> ) AS payments
LEFT JOIN items
ON payments.itemnumber=items.itemnumber
GROUP BY branch) AS tulot
LEFT JOIN branches
ON(tulot.branch=branches.branchcode COLLATE utf8_general_ci)
ORDER BY branchcity

Asiakkaiden maksut maksutyypin mukaan aikaväliltä

Muuta: Tämä raportti hakee tietyltä aikaväliltä käsiteltyjä maksuja. Käsittely voi tarkoittaa joko maksun luomista tai päivittämistä (maksamista).

Maksutunnukset:
F (myöh.maksut)
FU (myöh.maksut)
HE (noutamaton varaus)
ODUE1
ODUE2
ODUE3 (myöhästymismuistutuksia)
L (kadonnut aineisto, aineiston korvaus)
Korva (aineiston korvaus)
N (uusi kortti)
M (sekalainen)
Kopio (kopio)
Kauko (kaukolainat)
A (käyttäjätilin hallinta)
Konve (konvertoidut maksut esim. OUTI ja Lappi)

Lisääjä: Päivi Knuutinen / Vaara-kirjastot
pvm: 30.10.2018

SELECT CONCAT('<a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=', accountlines.borrowernumber, '">', accountlines.borrowernumber, '</a>') AS asiakas,
       CONCAT('<a href="/cgi-bin/koha/catalogue/moredetail.pl?type=&itemnumber=', accountlines.itemnumber, '">', accountlines.itemnumber, '</a>') AS Item, 
  accountlines.*
FROM accountlines
WHERE date(accountlines.timestamp) BETWEEN <<Alkupäivä|date>> AND <<Loppupäivä|date>> 
AND accounttype=<<Kohan maksutunnus>> 
AND amountoutstanding>0
ORDER BY accountlines_id

Vanhentuneet maksut

SELECT CONCAT('<a href="/cgi-bin/koha/members/boraccount.pl?borrowernumber=', accountlines.borrowernumber, '">', accountlines.borrowernumber, '</a>') AS borrowernumberi,
accountlines.*,
borrowers.* 
FROM accountlines, borrowers WHERE accountlines.amountoutstanding > 0 
AND accountlines.date<NOW()-INTERVAL 3 YEAR 
AND accountlines.borrowernumber LIKE <<borrowernumber TAI syötä %-merkki jos haluat kaikki>> 
AND accountlines.accounttype LIKE <<accounttype TAI syötä %-merkki jos haluat kaikki>> 
AND accountlines.borrowernumber=borrowers.borrowernumber 
AND borrowers.branchcode=<<Lainauskirjasto|branches>> 
GROUP BY borrowernumberi 
ORDER BY DATE DESC

Raportti näyttää maksut, jotka on luotu vähintään 3 vuotta sitten. Maksuja voi rajata borrowernumberilla tai maksun tyypillä (accounttype). Merkitse % jos haluat valita kaikki borrowernumberit ja/tai maksutyypit.

Lisääjä: Päivi Knuutinen / VAARA 5.2.2019


Luettelointi

Viimeksi lisätyt osakohteet

Raportilla voi hakea 300 viimeisimmän osakohteen tietuenumeron.

Lisääjä: Anneli Österman / OUTI-kirjastot
Pvm: 28.11.2018

SELECT b.biblionumber
FROM biblio b
LEFT JOIN biblio_metadata bm ON b.biblionumber = bm.biblionumber
WHERE ExtractValue(bm.metadata,'//datafield[@tag="773"]/subfield[@code="w"]') != ''
AND ExtractValue(bm.metadata,'//datafield[@tag="337"]/subfield[@code="a"]') = <<Kirjoita tyyppi>>
ORDER BY b.biblionumber DESC LIMIT 300

Osakohde merkitty monografiaksi

Lisääjä: Anneli Österman / OUTI-kirjastot
Pvm: 26.6.2019

SELECT CONCAT(b.title, ', ', '<br/>', '<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'\">',b.biblionumber,'</a>') AS 'Teos',
bi.itemtype AS 'Aineistolaji', bi.biblionumber AS 'Biblionro'
from biblio b
LEFT JOIN items i ON b.biblionumber = i.biblionumber
LEFT JOIN biblioitems bi ON bi.biblionumber = b.biblionumber
LEFT JOIN biblio_metadata bm ON bm.biblionumber = b.biblionumber
WHERE ExtractValue(bm.metadata,'//datafield[@tag="773"]/subfield[@code="w"]') != ''
AND i.itemnumber IS NULL
AND SUBSTR(ExtractValue(bm.metadata,'//leader'),8,1) NOT IN ('a', 'b', 'd')

Kuljetukset

Lähtökirjastossa kuljetuksessa olevat

Näyttää kuljetukset jotka eivät ole saapuneet perille, halutusta kirjastosta, järjestäen vanhemmat kuin 7 päivää ensimmäiseksi.

SELECT
   IF(bt.datesent < DATE_SUB(NOW(), INTERVAL 7 DAY), '*', '') AS 'late',
   b.author,
   CONCAT('<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=', b.biblionumber, '">', b.title, '</a>') AS 'title',
   CONCAT('<a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=', b.biblionumber, '#item', bt.itemnumber, '">', i.barcode, '</a>') AS 'barcode',
   i.itype,
   i.location,
   bt.tobranch,
   bt.datesent
FROM branchtransfers bt
LEFT JOIN items i ON i.itemnumber = bt.itemnumber
LEFT JOIN biblio b ON b.biblionumber = i.biblionumber
WHERE bt.frombranch = <<Lähtökirjasto|branches>>
  AND bt.datearrived IS NULL
ORDER BY
    late DESC,
    bt.tobranch,
    bt.datesent ASC

Omasta kirjastosta muualle kuljetuksessa olevat niteet

Raportti listaa ajasta riippumatta kaikki niteet, jotka ovat kuljetettavana ja lähettävänä kirjastona on valittu kirjasto.

Lisääjä: Anneli Österman
Pvm: 9.4.2020

SELECT CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'" target="_blank">',b.title, ' ', ExtractValue(bm.metadata,'//datafield[@tag="245"]/subfield[@code="b"]'),'</a>') AS Nimeke, i.enumchron AS 'Lehden numero', b.author AS 'Tekijä', i.barcode AS Viivakoodi, i.cn_sort AS 'Luokka ja pääsana', bt.tobranch AS 'Kuljetettavana kirjastoon', date(bt.datesent) AS 'Asetettu kuljetettavaksi'
FROM branchtransfers bt
JOIN items i USING (itemnumber)
JOIN biblio b USING (biblionumber)
JOIN biblio_metadata bm USING (biblionumber)
WHERE bt.frombranch=<<Valitse kirjasto|branches>>
AND datearrived is null
ORDER BY 5

Lähtevien kuljetusten määrä

Parametreiksi valitaan lähettäjäkirjasto ja vuosi (kirjoita vuosilukuja perään prosenttimerkki, esim. 2018%). Tulokset jaotellaan kuukausittain.

Tehnyt: Anneli Österman 27.2.2019

select month(datesent) as 'Kuukausi',count(*) as 'Lähetettyjä niteitä'
from branchtransfers 
where frombranch=<<Lähettäjäkirjasto|branches>>
and datesent like <<Kirjoita vuosi ja prosenttimerkki>>
group by month(datesent)

Saapuvien kuljetusten määrä

Parametreiksi valitaan vastaanottajakirjasto ja vuosi (kirjoita vuosilukuja perään prosenttimerkki, esim. 2018%). Tulokset jaotellaan kuukausittain.

Tehnyt: Anneli Österman 27.2.2019

select month(datesent) as 'Kuukausi' ,count(*) as 'Vastaanotetut niteet'
from branchtransfers 
where tobranch=<<Vastaanottajakirjasto|branches>>
and datesent like <<Kirjoita vuosi ja prosenttimerkki>>
group by month(datesent)

Hankinta

Kouvolan hankintaraportti

Kouvolassa rahoja seurataan hyllypaikoittain ja osin aineistolajeittain, jotta valitsijoiden on helppo seurata ’omia’ rahojansa. Tässä on varmaan paljon vaihtelua kirjastoittain ja siksi tätä raporttia voi joutua paljonkin kustomoimaan. Aineistojen hintoja on raporttiin haettu paristakin paikasta ihan vertailun vuoksi, me käytämme sum(items.price) eli niteissä olevaa hintaa.
Tehnyt: Tuomas Kunttu 29.1.2019

SELECT items.permanent_location AS 'hyllypaikka', count(items.itemnumber) AS 'Hankittu', sum(items.price) AS 'Hinta niteissä', sum(aqorders.unitprice) AS 'Hinta tilauksessa', 'Kaikki aineistolajit'
FROM items
JOIN aqorders_items ON (aqorders_items.itemnumber=items.itemnumber)
JOIN aqorders ON (aqorders_items.ordernumber=aqorders.ordernumber)
WHERE aqorders.datereceived BETWEEN (@AloitusPvm:= <<AloitusPvm |date>>) AND (@LopetusPvm:= <<LopetusPvm |date>>) AND items.homebranch like 'KOU%'
GROUP BY items.permanent_location WITH ROLLUP
UNION ALL

SELECT items.permanent_location AS 'hyllypaikka', count(items.itemnumber) AS 'Hankittu', sum(items.price) AS 'Hinta niteissä', sum(aqorders.unitprice) AS 'Hinta tilauksessa', 'CD+kasetti+äänilevy'
FROM items
JOIN aqorders_items ON (aqorders_items.itemnumber=items.itemnumber)
JOIN aqorders ON (aqorders_items.ordernumber=aqorders.ordernumber)
WHERE aqorders.datereceived BETWEEN @AloitusPvm AND @LopetusPvm AND items.homebranch like 'KOU%' AND (items.itype="CD" OR items.itype="AANILEVY" OR items.itype="KASETTI")
GROUP BY items.permanent_location WITH ROLLUP

UNION ALL
SELECT items.permanent_location AS 'hyllypaikka', count(items.itemnumber) AS 'Hankittu', sum(items.price) AS 'Hinta niteissä', sum(aqorders.unitprice) AS 'Hinta tilauksessa', 'Kirjat + muut aineistot'
FROM items
JOIN aqorders_items ON (aqorders_items.itemnumber=items.itemnumber)
JOIN aqorders ON (aqorders_items.ordernumber=aqorders.ordernumber)
WHERE aqorders.datereceived BETWEEN @AloitusPvm AND @LopetusPvm AND items.homebranch like 'KOU%' AND (items.itype="KIRJA" OR items.itype="CDROM" OR items.itype="DIA" OR items.itype="ESINE" OR items.itype="KARTTA" OR items.itype="KIELIKURS" OR items.itype="KUUNNELMA" OR items.itype="KASIKIRJ" OR items.itype="LEIKEK" OR items.itype="LIIKUNTA" OR items.itype="MIKROF" OR items.itype="MIKROK" OR items.itype="MONISTE" OR items.itype="MONIV" OR items.itype="TYOPIIR" OR items.itype="AANIKIRJA")
GROUP BY items.permanent_location WITH ROLLUP

UNION ALL
SELECT items.permanent_location AS 'hyllypaikka', count(items.itemnumber) AS 'Hankittu', sum(items.price) AS 'Hinta niteissä', sum(aqorders.unitprice) AS 'Hinta tilauksessa', 'DVD + Blu-ray + Combo + video'
FROM items
JOIN aqorders_items ON (aqorders_items.itemnumber=items.itemnumber)
JOIN aqorders ON (aqorders_items.ordernumber=aqorders.ordernumber)
WHERE aqorders.datereceived BETWEEN @AloitusPvm AND @LopetusPvm AND items.homebranch like 'KOU%' AND (items.itype="DVD" OR items.itype="BLURAY" OR items.itype="DVDBR" OR items.itype="VIDEO")
GROUP BY items.permanent_location WITH ROLLUP

UNION ALL
SELECT items.permanent_location AS 'hyllypaikka', count(items.itemnumber) AS 'Hankittu', sum(items.price) AS 'Hinta niteissä', sum(aqorders.unitprice) AS 'Hinta tilauksessa', 'konsolipeli'
FROM items
JOIN aqorders_items ON (aqorders_items.itemnumber=items.itemnumber)
JOIN aqorders ON (aqorders_items.ordernumber=aqorders.ordernumber)
WHERE aqorders.datereceived BETWEEN @AloitusPvm AND @LopetusPvm AND items.homebranch like 'KOU%' AND items.itype="KONSOLIP" 
GROUP BY items.permanent_location WITH ROLLUP

UNION ALL
SELECT items.permanent_location AS 'hyllypaikka', count(items.itemnumber) AS 'Hankittu', sum(items.price) AS 'Hinta niteissä', sum(aqorders.unitprice) AS 'Hinta tilauksessa', 'nuotti'
FROM items
JOIN aqorders_items ON (aqorders_items.itemnumber=items.itemnumber)
JOIN aqorders ON (aqorders_items.ordernumber=aqorders.ordernumber)
WHERE aqorders.datereceived BETWEEN @AloitusPvm AND @LopetusPvm AND items.homebranch like 'KOU%' AND items.itype="NUOTTI" 
GROUP BY items.permanent_location WITH ROLLUP

UNION ALL
SELECT items.permanent_location AS 'hyllypaikka', count(items.itemnumber) AS 'Hankittu', sum(items.price) AS 'Hinta niteissä', sum(aqorders.unitprice) AS 'Hinta tilauksessa', 'lehti'
FROM items
JOIN aqorders_items ON (aqorders_items.itemnumber=items.itemnumber)
JOIN aqorders ON (aqorders_items.ordernumber=aqorders.ordernumber)
WHERE aqorders.datereceived BETWEEN @AloitusPvm AND @LopetusPvm AND items.homebranch like 'KOU%' AND items.itype="KAUSIJULK" 
GROUP BY items.permanent_location WITH ROLLUP

UNION ALL
SELECT items.permanent_location AS 'hyllypaikka', count(items.itemnumber) AS 'Hankittu', sum(items.price) AS 'Hinta niteissä', sum(aqorders.unitprice) AS 'Hinta tilauksessa', 'muut, joita ei pitäisi ollakaan'
FROM items
JOIN aqorders_items ON (aqorders_items.itemnumber=items.itemnumber)
JOIN aqorders ON (aqorders_items.ordernumber=aqorders.ordernumber)
WHERE aqorders.datereceived BETWEEN @AloitusPvm AND @LopetusPvm AND items.homebranch like 'KOU%' AND (items.itype="KAUSIJULK" OR items.itype="LEHTI" OR items.itype="EKIRJA" OR items.itype="EAANIKIRJA" OR items.itype="DAISY")
GROUP BY items.permanent_location WITH ROLLUP

Nimekkeet, joissa on niteitä tilattu-tilassa

Raportti listaa nimekkeet, joissa on valitulla kirjastolla nide/niteitä tilattu-tilassa (notforloan: -1). Lisäksi parametrinä määritetään, että niteen hankintapäivä on aikaisempi kuin valittu päivä. Raportista on erityisesti apua silloin, kun kyseessä on vanhasta järjestelmästä tuodut niteet, joille ei ole tilausta Kohassa.

Lisääjä: Anneli Österman
Pvm: 9.4.2020

SELECT CONCAT(b.title, ', ', '<br/>', '<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'\">',b.biblionumber,'</a>') AS 'Teos', bi.itemtype AS 'Aineistolaji', b.biblionumber AS 'Teosnumero'
FROM biblio b
LEFT JOIN biblio_metadata bm USING (biblionumber)
LEFT JOIN items i USING (biblionumber)
LEFT biblioitems bi USING (biblionumber)
WHERE ExtractValue(bm.metadata,'//datafield[@tag="773"]/subfield[@code="w"]') = ''
AND i.notforloan='-1'
AND i.homebranch= <<Valitse kotikirjasto|branches>>
AND i.dateaccessioned< <<Hankittu aikaisemmin kuin|date>>
GROUP BY biblionumber

Nimekkeet, joissa on niteitä saapunut-tilassa

Raportti listaa nimekkeet, joissa on valitulla kirjastolla nide/niteitä saapunut-tilassa (notforloan: -2). Lisäksi parametrinä määritetään, että niteen hankintapäivä on aikaisempi kuin valittu päivä. Raportista on erityisesti apua silloin, kun kyseessä on vanhasta järjestelmästä tuodut niteet, joille ei ole tilausta Kohassa.

Lisääjä: Anneli Österman
Pvm: 9.4.2020

SELECT CONCAT(b.title, ', ', '<br/>', '<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'\">',b.biblionumber,'</a>') AS 'Teos', bi.itemtype AS 'Aineistolaji', b.biblionumber AS 'Teosnumero'
FROM biblio b
LEFT JOIN biblio_metadata bm USING(biblionumber)
LEFT JOIN items i USING (biblionumber)
LEFT JOIN biblioitems bi USING (biblionumber)
WHERE ExtractValue(bm.metadata,'//datafield[@tag="773"]/subfield[@code="w"]') = ''
AND i.notforloan='-2'
AND i.homebranch= <<Valitse kotikirjasto|branches>>
AND i.dateaccessioned< <<Hankittu aikaisemmin kuin|date>>
GROUP BY biblionumber

Kohan itsepalvelun (SCO) apuraportit

Muualle kuljetettavana olevat niteet

Raportilla voi hakea niteet, jotka ovat lähteneet kuljetukseen valitusta kirjastosta eivätkä ole vielä saapuneet määränpäähän. Valittavina parametreinä kirjasto ja lähtöpäivämäärä.

Lisännyt: Anneli Österman / OUTI-kirjastot
Pvm: 29.11.2019

SELECT CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'">',b.title,'</a>') AS Nimeke, b.author AS 'Tekijä', i.barcode AS Viivakoodi, i.cn_sort AS 'Luokka ja pääsana'
FROM branchtransfers bt
JOIN items i USING (itemnumber)
JOIN biblio b USING (biblionumber)
WHERE bt.frombranch=<<Valitse kirjasto|branches>>
AND date(bt.datesent)=<<Valitse päivämäärä|date>>
AND datearrived is null
ORDER BY 4

Ylläpito-, huolto- ja siirtoloitsuja

Tämän otsikon alle kerätään erilaisia ylläpitoon ja siirtoihin liittyviä loitsuja, joilla kehittäjät voivat säätää massana mm. eräpäiviä ja varausten noutopäiviä. Jos luo jonkin uuden "huoltoloitsun", kannattaa se lisätä tänne myöhempääkin käyttöä varten.

Varausten noutopäivien siirto

UPDATE reserves SET expirationdate='2020-06-15' WHERE branchcode IN ('KOU_EL', 'KOU_HA', 'KOU_IN', 'KOU_JA', 'KOU_KO', 'KOU_VA', 'KOU_MY', 'KOU_QU', 'KOU_PK') AND found='W' AND expirationdate BETWEEN '2020-06-06' AND '2020-06-12';

tai

UPDATE reserves SET expirationdate='2020-09-07' WHERE branchcode IN ('KOU_A1', 'KOU_A2') AND found='W' AND expirationdate = '2020-06-15';

Eräpäivät siirretty

UPDATE issues SET date_due='2020-09-07 23:59:01' WHERE branchcode IN ('KOU_A1', 'KOU_A2') AND date_due BETWEEN '2020-06-15' AND '2020-09-02';

tai

UPDATE issues SET date_due='2020-08-31 23:59:01' WHERE branchcode = 'ROAU' AND date_due LIKE '2020-06-08%';

tai

UPDATE issues SET date_due='2020-04-01 23:59:01' WHERE branchcode in ('PYPK', 'PYPIR', 'PYKIKI') AND returndate is null AND date_due between '2020-03-13' AND '2020-04-01';

Eräpäivät siirretty asiakaslajilta

UPDATE issues iss LEFT JOIN borrowers bor ON (iss.borrowernumber = bor.borrowernumber) SET iss.date_due = '2020-09-14 23:59:01' WHERE iss.branchcode IN ('OUAKSELI', 'OUAS', 'OUH', 'OUHA', 'OUHI', 'OUJA', 'OUKA', 'OUKEL', 'OUKI', 'OUKK', 'OUKL', 'OUKS', 'OUKV', 'OUMA', 'OUMAR', 'OUONNELI', 'OUOS', 'OUPK', 'OUPT', 'OUPV', 'OUR', 'OURI', 'OUTEUVO', 'OUUL', 'OUY', 'OUYKI', 'OUYLI') AND iss.date_due BETWEEN '2020-06-08' AND '2020-09-14' AND bor.categorycode = 'KOTIPALVEL';

Eräpäivän korjaus tietyn päivän lainoilta

UPDATE issues SET date_due='2019-11-21 23:59:00' WHERE issuedate like '2019-10-09%' AND branchcode='ROAU';

Noutamattomien varausten maksun poisto

UPDATE accountlines SET amountoutstanding=0 WHERE accounttype='HE' AND timestamp like '2020-06-02%' AND amountoutstanding=1;

Asiakastilin vanhenemisen siirto

UPDATE borrowers SET dateexpiry=dateexpiry + interval 6 month WHERE dateexpiry BETWEEN '2020-03-17' AND '2020-12-31' AND categorycode!='VIRKAILIJA';

Niteen kotikirjaston muutos

UPDATE items SET homebranch='OUPK' WHERE homebranch like 'OU%' AND homebranch not in ('OUBY', 'OUKIKA', 'OUKEPA', 'OUAKSELI', 'OUPK') AND itype not in ('LA', 'SL', 'ES') AND permanent_location not in ('KOULU', 'LUKIO');

Kellutussäännön fiksaus

UPDATE floating_matrix SET condition_rules = REPLACE(condition_rules, ' PILA ', ' EIKELLU ') WHERE condition_rules like '%PILA%';

Viestinnän poikkeustilanteet

Otin talteen (tauluun kd_4400) pending-tilaiset viestit ennen tuota haluttua aikaa, ja asetin sitten niitten viestien tilaksi failed.

create table kd_4400 like message_queue;
insert kd_4400 select * from message_queue where status='pending' and time_queued < '2020-04-02 10:31:33';
update message_queue set status='failed' where status='pending' and time_queued < '2020-04-02 10:31:33';

    Laitoin ajastetut viestintäpalikat päälle.

Varausten keskeytys ja ei-noutopaikaksi laitto

Varaukset noista ('TLYT', 'YPAU', 'YPEN', 'YPKA', 'YPKI', 'YPMU', 'YPPA') keskeytetty (yht. 199 kpl), ja kys. kirjastot laitettu ei-noutopaikoiksi.

Ajetut SQL-komennot:

create table reserves_kd4067 like reserves;
insert into reserves_kd4067 select * from reserves where branchcode in ('TLYT', 'YPAU', 'YPEN', 'YPKA', 'YPKI', 'YPMU', 'YPPA') and suspend=0;
update reserves set suspend=1 where branchcode in ('TLYT', 'YPAU', 'YPEN', 'YPKA', 'YPKI', 'YPMU', 'YPPA') and suspend=0
update branches set pickup_location=0 where branchcode in ('TLYT', 'YPAU', 'YPEN', 'YPKA', 'YPKI', 'YPMU', 'YPPA');

tai
KEPK:sta noudettavat varaukset keskeytetty (993 kpl), ja kirjasto ei-noutopaikaksi.

update branches set pickup_location=0 where branchcode='KEPK';
insert into reserves_kd4067 select * from reserves where branchcode='KEPK' and suspend=0;
update reserves set suspend=1 where branchcode='KEPK';

Varausten noutopaikan vaihtaminen toiseen kirjastoon

Varaukset vaihdettu noudettavaksi JOE_JOE:sta. Tehdyt komennot:

create table reserves_kd4071 like reserves;
insert into reserves_kd4071 select * from reserves where branchcode='JOE_RAN';
update reserves set branchcode='JOE_JOE' where reserve_id in (select reserve_id from reserves_kd4071);

(Eli kaikki JOE_RAN varaukset otettu ensin talteen reserves_kd4071 -tauluun, ja sitten vaihdettu niistä alkuperäisistä varauksista noutopaikaksi JOE_JOE)

Hyllypaikan niteiden muuttaminen tilapäisesti ei-lainata -tilaan

Pääkirjaston lastenosaston paikalla olevat niteet laitettu notforloan-arvolle, jonka mukaan niteitä ei lainata eikä varata, mutta arvo poistuu niteen palautuksen yhteydessä (ei koske lehtiä)

update items set notforloan=9 where holdingbranch='JOE_JOE' and location='LAP' and itype!='AL' and notforloan=0 and onloan is not null; 

korjaus noudettavien varausten osalta:
update items i left join reserves r on (i.itemnumber=r.itemnumber) set i.notforloan=0 where i.notforloan=9 and r.found='W';