Serial reports
Jump to navigation
Jump to search
This is the page that relates to serials reports.
The following SQL statements have been written by Koha users world-wide. Keep in mind that not all reports have been tested and should be read thoroughly before applying them to your own system.
Return to the SQL Reports Library
Shows the total serial received during the month
- Developer: Nikunj Tyagi, DPL
- Module: Serial
- Purpose: Shows the total serials received with Title, Frequency, latest issue detail
- Status: Complete
SELECT serial.subscriptionid,serial.biblionumber,serial.serialid,biblio.title,serial.serialseq,serial.planneddate,serial.publisheddate,
IF( LOCATE('<datafield tag="310"', biblioitems.marcxml) = 0 OR LOCATE('<subfield code="a">', biblioitems.marcxml,
LOCATE('<datafield tag="310"', biblioitems.marcxml)) = 0 OR LOCATE('<subfield code="a">', biblioitems.marcxml,
LOCATE('<datafield tag="310"', biblioitems.marcxml)) > LOCATE('</datafield>', biblioitems.marcxml, LOCATE('<datafield tag="310"', biblioitems.marcxml)), '',
SUBSTRING( biblioitems.marcxml,
LOCATE('<subfield code="a">', biblioitems.marcxml, LOCATE('<datafield tag="310"', biblioitems.marcxml)) + 19,
LOCATE('</subfield>', biblioitems.marcxml, LOCATE('<subfield code="a">', biblioitems.marcxml,
LOCATE('<datafield tag="310"', biblioitems.marcxml)) + 19) -(LOCATE('<subfield code="a">', biblioitems.marcxml,
LOCATE('<datafield tag="310"', biblioitems.marcxml)) + 19)))
AS FREQUENCY FROM serial, biblio,biblioitems
WHERE serial.biblionumber = biblio.biblionumber AND serial.biblionumber=biblioitems.biblionumber AND MONTH(planneddate) = 03 AND YEAR(planneddate)= 2011 AND (status)=2
ORDER BY serial.subscriptionid ASC
missing/late/claimed serial during the month
- Developer: Nikunj Tyagi, DPL
- Module: Serial
- Purpose: Shows the total serials missing/late/claimed with Title, Frequency, latest issue detail status 3=late,4=missing,5=claimed
- Status: Complete
SELECT
s.subscriptionid,
s.biblionumber,
s.serialid,
b.title,
s.serialseq,
s.planneddate,
s.publisheddate,
IF(LOCATE('<datafield tag="310"', bm.metadata) = 0
OR LOCATE('<subfield code="a">', bm.metadata,
LOCATE('<datafield tag="310"', bm.metadata)) = 0
OR LOCATE('<subfield code="a">', bm.metadata,
LOCATE('<datafield tag="310"', bm.metadata)) >
LOCATE('</datafield>', bm.metadata,
LOCATE('<datafield tag="310"', bm.metadata)),
'',
SUBSTRING( bm.metadata,
LOCATE('<subfield code="a">', bm.metadata,
LOCATE('<datafield tag="310"', bm.metadata)) + 19,
LOCATE('</subfield>', bm.metadata,
LOCATE('<subfield code="a">', bm.metadata,
LOCATE('<datafield tag="310"', bm.metadata)) + 19) -
(LOCATE('<subfield code="a">', bm.metadata,
LOCATE('<datafield tag="310"', bm.metadata)) + 19))
) AS FREQUENCY,
s.status
FROM
serial s,
biblio b,
biblioitems bi,
biblio_metadata bm
WHERE
s.biblionumber = b.biblionumber AND
s.biblionumber = bi.biblionumber AND
bm.biblionumber = b.biblionumber AND
MONTH(planneddate) = 10 AND
YEAR(planneddate) = 2023 AND
(status) BETWEEN '3' AND '5'
ORDER BY
s.subscriptionid ASC
Late Issues
- Developer: Nicole C. Baratta, ByWater Solutions
- Module: Serials
- Purpose: A list of items that should have arrived by now
- Status: Complete
select b.title, s.serialseq, s.planneddate
from serial s
left join biblio b using (biblionumber)
where s.planneddate < CURDATE() and s.status not in ('1','2')
Latest Issues
- Developer: Nicole C. Baratta, ByWater Solutions
- Module: Serials
- Purpose: A list of the latest issue received for each subscription
- Status: Complete
select b.title, b.biblionumber, MAX(CONCAT(s.publisheddate, ' / ',s.serialseq)) as 'date and enumeration'
from serial s
left join biblio b using (biblionumber)
where s.status=2
group by b.biblionumber
order by s.publisheddate desc
Issues Received in a Range
- Developer: Nicole C. Baratta, ByWater Solutions with MJ Ray
- Module: Serials
- Purpose: A list of your serials and the year range you have received
- Status: Complete
SELECT b.title, i.issn,
CONCAT(YEAR(MIN(s.publisheddate)), ' to ', YEAR(MAX(s.publisheddate))) AS 'range'
FROM serial s
LEFT JOIN biblio b USING (biblionumber)
LEFT JOIN biblioitems i USING (biblionumber)
WHERE s.STATUS=2
GROUP BY b.biblionumber
ORDER BY b.title ASC
Year range of serials holdings
- Developer: Paul Landers
- Module: Serials
- Purpose: Year range of all serial subscription titles by holding branch
- Status: Complete
SELECT
s.biblionumber,
c.issn AS ISSN,
i.holdingbranch,
b.title AS Title,
ExtractValue(m.metadata,'//datafield[@tag="222"]/subfield[@code>="a"]') AS 'MARC 222 Title',
YEAR(MIN(s.publisheddate)) AS 'begin',
YEAR(MAX(s.publisheddate)) AS 'end'
FROM serial s,items i,biblio b, biblioitems c, biblio_metadata m, serialitems si
WHERE si.itemnumber=i.itemnumber
AND i.biblionumber=b.biblionumber
AND b.biblionumber=c.biblionumber
AND i.biblionumber=m.biblionumber
AND si.serialid = s.serialid
AND i.holdingbranch = <<Branch|branches>>
GROUP BY b.biblionumber
ORDER BY b.title
Fix Subscriptions without Subscription Start Dates
- Developer: Barton Chittenden
- Module: Serials
- Purpose: Fix serials that generate the following error message: Software error: Date::Calc::Add_Delta_YM(): not a valid date at /var/lib/koha/aarome/kohaclone/C4/Serials.pm line 2651.
- Status: Complete
select
CONCAT(
'<a href="http://',
(SELECT value
FROM systempreferences
WHERE variable='staffClientBaseURL'),
'/cgi-bin/koha/serials/subscription-history.pl?subscriptionid=',
subscriptionid,
'">', title, '</a>'
) as 'Edit Subscription for',
subscriptionid,
startdate,
histstartdate
from
subscription
inner join biblio using (biblionumber)
left join subscriptionhistory using (subscriptionid)
left join serial using (subscriptionid)
where
startdate is NULL
or histstartdate is NULL
group by subscriptionid
List of Current Periodicals and their holdings
- Developer: Joseph Alway
- Module: Serials
- Purpose: List current subscriptions.
- Status: Complete
SELECT
CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',biblio.biblionumber,'\">',biblio.biblionumber,'</a>') AS biblionumber,
CONCAT('<a href=\"/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=',subscription.subscriptionid,'\">',subscription.subscriptionid,'</a>') AS subscriptionid,
biblio.title, ExtractValue( metadata, '//datafield[@tag="022"]/subfield[@code="a"]' ) as ISSN, GROUP_CONCAT(serial.serialseq SEPARATOR '; ') AS Holdings
FROM
subscription
JOIN biblio ON ( subscription.biblionumber = biblio.biblionumber )
JOIN biblio_metadata ON ( subscription.biblionumber = biblio_metadata.biblionumber )
LEFT JOIN serial ON ( subscription.subscriptionid = serial.subscriptionid )
WHERE
(subscription.closed = 0)
GROUP BY biblio.biblionumber
ORDER BY biblio.title
List of Non Current Periodicals and their holdings
- Developer: Joseph Alway
- Module: Serials
- Purpose: List closed subscriptions.
- Status: Complete
SELECT
CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',biblio.biblionumber,'\">',biblio.biblionumber,'</a>') AS biblionumber,
CONCAT('<a href=\"/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=',subscription.subscriptionid,'\">',subscription.subscriptionid,'</a>') AS subscriptionid,
biblio.title, ExtractValue( metadata, '//datafield[@tag="022"]/subfield[@code="a"]' ) as ISSN, GROUP_CONCAT(serial.serialseq SEPARATOR '; ') AS Holdings
FROM
subscription
JOIN biblio ON ( subscription.biblionumber = biblio.biblionumber )
JOIN biblio_metadata ON ( subscription.biblionumber = biblio_metadata.biblionumber )
LEFT JOIN serial ON ( subscription.subscriptionid = serial.subscriptionid )
WHERE
(subscription.closed != 0)
GROUP BY biblio.biblionumber
ORDER BY biblio.title
List of Non Current Periodicals and their holdings *Special Case*
- Developer: Joseph Alway
- Module: Serials
- Purpose: List Holdings information from Marc Record and closed subscriptions. Combines two reports into one.
- Status: Complete
SELECT
CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',biblio.biblionumber,'\">',biblio.biblionumber,'</a>') AS biblionumber,
NULL AS subscriptionid, biblio.title, ExtractValue( metadata, '//datafield[@tag="022"]/subfield[@code="a"]' ) as ISSN,
ExtractValue( metadata, '//datafield[@tag="966"]/subfield[@code="a"]' ) as Holdings, NULL AS 'S. Holdings'
FROM
biblio_metadata
JOIN biblio ON (biblio_metadata.biblionumber = biblio.biblionumber)
WHERE
(ExtractValue( metadata, '//datafield[@tag="942"]/subfield[@code="c"]' ) LIKE "CR")
AND (ExtractValue( metadata, '//datafield[@tag="966"]/subfield[@code="a"]' ) NOT LIKE "%See%Subscriptions%for%More%Details%")
AND (ExtractValue( metadata, '//datafield[@tag="966"]/subfield[@code="a"]' ) NOT LIKE "%Current%issues%")
AND (ExtractValue( metadata, '//datafield[@tag="966"]/subfield[@code="a"]' ) NOT LIKE "")
UNION ALL
SELECT
CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',biblio.biblionumber,'\">',biblio.biblionumber,'</a>') AS biblionumber,
CONCAT('<a href=\"/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=',subscription.subscriptionid,'\">',subscription.subscriptionid,'</a>') AS subscriptionid,
biblio.title as title, ExtractValue( metadata, '//datafield[@tag="022"]/subfield[@code="a"]' ) as ISSN, ExtractValue( metadata, '//datafield[@tag="966"]/subfield[@code="a"]' ) as Holdings,
GROUP_CONCAT(serial.serialseq SEPARATOR '; ') AS 'S. Holdings'
FROM
subscription
JOIN biblio ON (subscription.biblionumber = biblio.biblionumber)
JOIN biblio_metadata ON (subscription.biblionumber = biblio_metadata.biblionumber)
LEFT JOIN serial ON (subscription.subscriptionid = serial.subscriptionid)
WHERE
(subscription.closed != 0)
GROUP BY biblio.biblionumber
ORDER BY title