You are here:
< Back

Cet article vous aidera à personnaliser les rapports SQL avec différentes fonctions. On y apprend comment ajouter des hyperliens dans un rapport, comment extraire l’information de champs MARC spécifiques et comment ajouter un menu d’options dans la page d’exécution du rapport.

Informations MARC

Toutes les informations MARC sont dans la table biblio_metadata. Assurez-vous que celle-ci soit dans votre section « FROM ».

Lieu de publication (008/15-17)

SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 16,3 ) 

Exemples d'utilisations

Rapport pour obtenir une liste de titres et le lieu de publication

SELECT
    title AS "Titre",
    SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 16,3 ) AS "Lieu de publication"
FROM
    biblio
    LEFT JOIN biblio_metadata USING (biblionumber)

Rapport pour sortir les titres des notices qui ont « quc » dans le lieu de publication

SELECT
     title AS "Titre"
 FROM 
     biblio_metadata
     LEFT JOIN biblio USING (biblionumber)
 WHERE 
     SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 16,3 ) = "quc"

Lieu de publication (264 $a)

ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="a"]')

Exemples d'utilisations

Rapport pour obtenir une liste de titres et le lieu de publication

SELECT
    title AS "Titre",
    ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="a"]') AS "Lieu de publication"
FROM
    biblio
    LEFT JOIN biblio_metadata USING (biblionumber)

Rapport pour obtenir la liste de titres dont le lieu de publication est (contient) Montréal

SELECT
    title AS "Titre",
    ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="a"]') AS "Lieu de publication"
FROM
    biblio
    LEFT JOIN biblio_metadata USING (biblionumber)
WHERE
    ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="a"]') LIKE "%Montréal%"

Langue (008/35-37)

SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36,3 ) 

Exemples d'utilisations

Rapport pour obtenir une liste de titres et la langue

SELECT
    title AS "Titre",
    SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36,3 ) AS "Langue"
FROM
    biblio
    LEFT JOIN biblio_metadata USING (biblionumber)

Rapport qui montre les notices dont la langue dans la zone 008 n’est pas la même que dans la zone 041$a

SELECT
     title AS "Titre",
     SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36,3 ) AS "Langue (008)",
     ExtractValue(metadata, '//datafield[@tag="041"]/subfield[@code="a"]') AS "Langue (041a)"
 FROM
     biblio
     LEFT JOIN biblio_metadata USING (biblionumber)
 WHERE
     SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36,3 ) != ExtractValue(metadata, '//datafield[@tag="041"]/subfield[@code="a"]')

Éditeur (264 $b)

ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="b"]')

Exemples d'utilisations

Rapport pour obtenir le nombre de notices par éditeur

SELECT
    ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="b"]') AS "Éditeur",
    count(*) AS "Nombre de notices"
FROM
    biblio
    LEFT JOIN biblio_metadata USING (biblionumber)
GROUP BY ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="b"]')

Rapport pour obtenir la liste de titres dont l’éditeur est La courte échelle (contient « courte échelle »)

SELECT
    title AS "Titre",
    ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="b"]') AS "Éditeur"
FROM
    biblio
    LEFT JOIN biblio_metadata USING (biblionumber)
WHERE
    ExtractValue(metadata, '//datafield[@tag="264"]/subfield[@code="b"]') LIKE "%courte échelle%"

Ajouter des liens

Dans l’interface des rapports de Koha, il est possible d’ajouter des liens pour aller vers une notice ou un dossier d’utilisateur. Cela ne donne toutefois pas de bons résultats si vous exportez le résultat du rapport dans un tableur par exemple.

Les liens doivent être dans la section SELECT du rapport.

Lien vers la notice

CONCAT('<a href=\"cgi-bin/koha/catalogue/detail.pl?biblionumber=', biblionumber, '\">Voir la notice</a>')

Exemples d'utilisations

Rapport qui montre les notices dont la langue dans la zone 008 n’est pas la même que dans la zone 041$a, avec lien vers la notice

SELECT
     title AS "Titre",
     SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36,3 ) AS "Langue (008)",
     ExtractValue(metadata, '//datafield[@tag="041"]/subfield[@code="a"]') AS "Langue (041a)",
    CONCAT('<a href=\"cgi-bin/koha/catalogue/detail.pl?biblionumber=', biblionumber, '\">Voir la notice</a>') AS ""
 FROM
     biblio
     LEFT JOIN biblio_metadata USING (biblionumber)
 WHERE
     SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36,3 ) != ExtractValue(metadata, '//datafield[@tag="041"]/subfield[@code="a"]')

Lien vers la modification de la notice

CONCAT('<a href=\"/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=', biblionumber, '\">Modifier la notice</a>')

Exemples d'utilisations

Rapport qui montre les notices dont la langue dans la zone 008 n’est pas la même que dans la zone 041$a, avec lien vers la modification de la notice

SELECT
     title AS "Titre",
     SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36,3 ) AS "Langue (008)",
     ExtractValue(metadata, '//datafield[@tag="041"]/subfield[@code="a"]') AS "Langue (041a)",
    CONCAT('<a href=\"cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=', biblionumber, '\">Modifier la notice</a>') AS ""
 FROM
     biblio
     LEFT JOIN biblio_metadata USING (biblionumber)
 WHERE
     SUBSTRING( ExtractValue(metadata,'//controlfield[@tag="008"]'), 36,3 ) != ExtractValue(metadata, '//datafield[@tag="041"]/subfield[@code="a"]')

Lien vers la modification de l’exemplaire

CONCAT('<a href=\"/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=', biblionumber, '&itemnumber=', itemnumber, '#edititem', '\">Modifier l\'exemplaire</a>')

Exemples d'utilisations

Liste de titres et cotes (090 $a et exemplaire), avec lien vers la modification de l’exemplaire

SELECT
    title AS "Titre",
    Extractvalue(metadata, '//datafield[@tag="090"]/subfield[@code="a"]') AS "Cote 090$a",
    itemcallnumber AS "Cote (exemplaire)",
    CONCAT('<a href=\"/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=', biblionumber, '&itemnumber=', itemnumber, '#edititem', '\">Modifier l\'exemplaire</a>')
FROM
    items
    LEFT JOIN biblio USING (biblionumber)
    LEFT JOIN biblio_metadata USING (biblionumber)

Lien vers le dossier de l’usager

CONCAT('<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=', borrowernumber, '\">Voir dossier</a>')

Exemples d'utilisations

Rapport des utilisateurs qui n’ont pas de garant, avec choix de catégorie d’utilisateur et lien vers le dossier de l’usager

SELECT
    cardnumber AS "Numéro de carte",
    surname AS "Nom de famille",
    firstname AS "Prénom",
    dateofbirth AS "Date de naissance",
    CONCAT('<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=', borrowernumber, '\">Voir dossier</a>')
FROM
    borrowers
WHERE
    categorycode = <<Catégorie d'utilisateur |categorycode>>
    AND guarantorid IS NULL

Ajouter des choix

Koha permet de choisir des variables au moment d’exécuter le rapport. Ceci permet de faire un seul rapport qui pourra servir pour plus qu’une utilisation.

Le principe des choix est de mettre le texte qui sera affiché, suivi d’une barre verticale (ou pipe en anglais), |, puis de la liste de choix, et ce, entre double chevrons (<< et >>). La liste de choix peut être un liste de valeurs autorisées :

  • LOC pour les localisations
  • CCODE pour les codes de collection
  • LOST pour les statuts « perdu »
  • DAMAGED pour les statuts « endommagé »
  • WITHDRAWN pour les statuts « élagué »
  • NOT_LOAN pour les statuts de prêt
  • ou toute autre liste de valeurs autorisées dans votre système

ou une des listes prédéfinies suivantes :

  • branches pour les bibliothèques
  • categorycode pour les catégories d’utilisateur
  • itemtypes pour les types de document
  • date donnera un petit calendrier pour choisir une date

Par exemple, <<Bibliothèque |branches>> affichera

Texte "Bibliothèque :" suivi d'un menu déroulant des bibliothèques

Alors que <<Choisir la bibliothèque |branches>> affichera

Texte "Choisir la bibliothèque :" suivi d'un menu déroulant des bibliothèques

Ces choix doivent être dans la section WHERE du rapport.

Choix de bibliothèque

<<Bibliothèque |branches>>

Exemples d'utilisations

Rapport pour obtenir la liste des utilisateurs expirés par bibliothèque

SELECT
    cardnumber AS "Numéro de carte",
    surname AS "Nom de famille",
    firstname AS "Prénom",
    dateexpiry AS "Date d'échéance"
FROM
    borrowers
WHERE
    dateexpiry <= CURDATE()
    AND branchcode = <<Bibliothèque |branches>>

Rapport pour obtenir la liste des documents perdus par bibliothèque et par localisation

SELECT
    title AS "Titre",
    itemlost_on AS "Perdu le",
    itemcallnumber AS "Cote"
FROM
    items
    LEFT JOIN biblio USING (biblionumber)
WHERE
    holdingbranch = <<Bibliothèque |branches>>
    AND location = <<Localisation |LOC>>
    AND itemlost != 0
ORDER BY
    cn_sort

Choix de catégorie d’utilisateur

<<Catégorie d'utilisateur |categorycode>>

Exemples d'utilisations

Rapport pour obtenir la liste des utilisateurs expirés par catégorie

SELECT
    cardnumber AS "Numéro de carte",
    surname AS "Nom de famille",
    firstname AS "Prénom",
    dateexpiry AS "Date d'échéance"
FROM
    borrowers
WHERE
    dateexpiry <= CURDATE()
    AND categorycode = <<Catégorie d'utilisateur |categorycode>>

Choix de type de document

<<Type de document |itemtype>>

Exemples d'utilisations


Voir aussi

Ressources de la communauté Koha

Last Updated On novembre 23, 2020