Autour du SIGB Koha

17.05 et versions suivantes : réécrire ses requêtes MARC

Les éléments MARC ont migré de la table biblioitems à la table biblio_metadata depuis la version 17.05.
Voici deux exemples de requête avant / après pour faciliter les mises à jour :

Liste des périodiques (champs titre, hyperlien biblionumber et ISSN)

AVANT 17.05

SELECT biblio.title, CONCAT(‘<a href=\ »/cgi-bin/koha/catalogue/detail.pl?biblionumber=’,biblio.biblionumber,’\ »>’,biblio.biblionumber,'</a>’) AS biblionum, biblioitems.issn
FROM biblioitems
LEFT JOIN biblio ON (biblio.biblionumber=biblioitems.biblionumber)
WHERE substring(ExtractValue(marcxml,’//leader’),8,1) =’s’
AND biblio.biblionumber IN (SELECT biblionumber FROM items)

DEPUIS 17.05

SELECT biblio.title,  CONCAT(‘<a href=\ »/cgi-bin/koha/catalogue/detail.pl?biblionumber=’,biblio.biblionumber,’\ »>’,biblio.biblionumber,'</a>’) AS biblionum, biblioitems.issn
FROM biblioitems
LEFT JOIN biblio ON (biblio.biblionumber=biblioitems.biblionumber)
LEFT JOIN biblio_metadata ON (biblio_metadata.biblionumber=biblio.biblionumber)
WHERE substring(ExtractValue(metadata,’//leader’),8,1) =’s’
AND biblio.biblionumber IN (SELECT biblionumber FROM items)

Liste des notices bibliographiques contenant une zone 856$z, note sur l’URL et le mode d’accès (champs 856$z, biblionumber, code-barres, date de dernière modification)

AVANT 17.05

SELECT ExtractValue(marcxml,’//datafield[@tag= »856″]/subfield[@code= »z »]’), items.biblionumber AS num, items.barcode, biblio.timestamp AS date_derniere_modif
FROM biblioitems
LEFT JOIN items USING(biblionumber)
LEFT JOIN biblio USING(biblionumber)
WHERE ExtractValue(marcxml,’//datafield[@tag= »856″]/subfield[@code= »z »]’)  != »
GROUP BY num

 DEPUIS 17.05

SELECT ExtractValue(metadata,’//datafield[@tag= »856″]/subfield[@code= »z »]’), items.biblionumber AS num, items.barcode
FROM biblio_metadata
LEFT JOIN items USING(biblionumber)
LEFT JOIN biblio USING(biblionumber)
WHERE ExtractValue(metadata,’//datafield[@tag= »856″]/subfield[@code= »z »]’)  != »
GROUP BY num