Consulter la vidéo ci-dessous pour une première approche de l’outil Construire un nouveau rapport dans Bilans et statistiques.
Pour les requêtes déjà prêtes à être exécutés (code qui commence par SELECT), il faut les copier/coller dans un nouveau rapport SQL (Bilans et statistiques>Créer à partir de SQL).
Koha permet de poser des questions à l’exécution et ainsi rendre les requêtes automatiquement dynamique. Le plus utile est probablement lors de l’utilisation de date qui change régulièrement.
Exemple :

select * from items where timestamp = <<Inscrire une date - AAAA-MM-JJ >>
Lors de l’exécution de ce rapport, vous devrez entrer une date pour que cette date soit inscrite dans la requête SQL.
La troncature est possible en SQL en utilisant le caractère ‘%’ accompagné de la fonction de validation : ‘like’
Exemple :
select * from items where barcode like '0123%' -- Troncature à droite.
select * from items where barcode like '%0123' -- Troncature à gauche.

select * from items where barcode like '%0123%' -- Troncature des 2 côtés
L’extraction des données à partir du marxml peut-être réaliser, mais demande quelques connaissances supplémentaires.
Exemple simple : On veut afficher la zone 100$a de toutes les notices :
select ExtractValue(metadata,'//datafield[@tag="100"]/subfield[@code="a"]') from biblio_metadata
Syntaxe : ExtractValue(metadata,’//leader’)
Il faut comprendre que nous allons avoir une série de caractères complets du tag sélectionné. Ce sera à nous par la suite de faire le tri pour retrouver l’information que nous avons besoin. Il est possible de le faire avec la fonction substring de mysql.
Exemple : On veut retrouver l’encodage du leader.
Il s’agit ici du caractère 17.
substring(ExtractValue(metadata,'//leader'),17,1)
Donc à partir du 17e caractère, retourner 1 caractère.
Syntaxe :
ExtractValue(metadata,'//controlfield[@tag="008"]')
Il faut comprendre que nous allons avoir une série de caractères complets du tag sélectionné. Ce sera à nous par la suite de faire le tri pour retrouver l’information que nous avons besoin.
Il est possible de le faire avec la fonction substring de mysql.
Ainsi, si on désire obtenir uniquement la date de publication de la zone 008.
Il s’agit des caractères : 7 à 10 inclusivement.
Il faut donc inscrire :
substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),8,4)
Donc à partir du 8e caractère retourner les 4 prochains caractères.
ExtractValue(metadata,'//datafield[@tag="260"]/subfield[@code="a"]')
ExtractValue(metadata,'//datafield[@tag="260"]/*')

ExtractValue(items.more_subfields_xml,'//datafield[@tag="999"]/subfield[@code>="x"]')
WHERE barcode LIKE CONCAT( '%', <<Code barre>>, '%')
Depuis la version 22.05, des liens sont faits automatiquement vers les notices et les exemplaires lorsqu'un rapport contient un biblionumber ou un itemnumber et vers les dossiers des usagers lorsqu'un rapport contient le borrowernumber ou le cardnumber. Ceci dit, la fonction peut toujours être utilisée avec d'autres champs qu'on veut rendre cliquables ou si on veut renvoyer vers d'autres pages, comme la page de détails à l'OPAC.
Par exemple, si on veut consulter la notice d'autorité :
CONCAT('<a href="/cgi-bin/koha/authorities/detail.pl?authid=',authid,'\" target="_blank" rel="noopener">',authid,'</a>') as 'Consulter notice',
ou encore rajouter un lien cliquable vers le contenu de la zone 856 (lien vers la table biblioitems)
CONCAT('<a href=\"',url,'\">',url,'</a>') AS url,
SELECT b.borrowernumber, b.cardnumber,b.surname, b.firstname, b.dateexpiry as 'Date Expiration',format(sum(amountoutstanding),2) as 'Solde des documents'
FROM
accountlines a
JOIN borrowers b on (a.borrowernumber=b.borrowernumber)
JOIN issues i on (a.borrowernumber=i.borrowernumber and a.itemnumber= i.itemnumber)
WHERE
i.issuedate >= <<Transaction après le AAAA-MM-JJ ?>> and
i.issuedate <= <<Transaction avant le AAAA-MM-JJ ?>>
GROUP BY
b.borrowernumber, b.cardnumber,b.surname, b.firstname, b.dateexpiry
having sum(amountoutstanding) >= <<Solde > que ?>>
ORDER BY sum(amountoutstanding) DESC;
Ce rapport permet d’avoir en main tous les usagers avec un solde X.
Colonnes affichées :
Ce rapport permet d’avoir la liste des prêt en cours au moment de l’édition du rapport avec une colonne qui envoi vers le compte de l’usager pour modifier ses préférences de notifications d’envoi de courriel.
Remarque: Il y a une limite à l’affichage de 1000 résultats pour que tous les résultats s’affichent dans la première page. Il faut ajuster le nombre selon le nombre de vos résultats.
Colonnes affichées
SELECT max(issues.date_due) as "Date de retour", borrowers.surname as "Nom de famille",
borrowernumber
FROM issues
LEFT JOIN borrowers ON (issues.borrowernumber=borrowers.borrowernumber)
LEFT JOIN borrower_message_preferences ON (issues.borrowernumber=borrower_message_preferences.borrowernumber)
WHERE borrower_message_preferences.message_attribute_id is NULL
group by borrowers.surname, borrowers.cardnumber
ORDER BY borrowers.surname ASC
LIMIT 1000
Exemple visuel
SELECT biblio.biblionumber,
items.barcode as 'Code à barres',
biblio.title as Titre,
items.itype as 'Type de document',
items.itemcallnumber as 'Cote',
biblio.biblionumber as 'Numéro notice',
items.dateaccessioned AS 'Date création exemplaire',
biblio.datecreated as 'Date création notice',
biblio.copyrightdate as 'Date publication 260$c'
FROM items
LEFT JOIN biblio USING (biblionumber)
LEFT JOIN issues USING (itemnumber)
LEFT JOIN old_issues USING (itemnumber)
WHERE issues.itemnumber IS NULL
AND old_issues.itemnumber IS NULL
order by items.itype, items.itemcallnumber Pour ce rapport, vous pouvez vous servir du module Bilans et Statistiques > Circulation et inscrire les paramètres comme ci-dessous.
Pour ce rapport, vous pouvez vous servir du module Bilans et Statistiques > Circulation et inscrire les paramètres comme ci-dessous
Liste des documents selon une catégorie avec une colonne pour le nombre de prêt et une colonne pour la date du dernier prêt. Un rapport qui peut être utile pour faire de l’élagage.
select items.itype as 'Type de document',
biblio.title as 'Titre',
concat(replace(ExtractValue(metadata,'//datafield[@tag="650"]/subfield[@code="a"]'),'/',''),' ', replace(ExtractValue(metadata,'//datafield[@tag="650"]/subfield[@code="z"]'),'/','')) as Sujet,
items.barcode as 'Code à barres',
items.itemcallnumber as Cote,
count(old_issues.issuedate) as 'Total prêt',
MAX(old_issues.issuedate) as 'Date dernier prêt'
from
old_issues
left join items on (old_issues.itemnumber=items.itemnumber)
LEFT JOIN biblioitems ON (biblioitems.biblioitemnumber = items.biblioitemnumber)
LEFT JOIN biblio ON (biblio.biblionumber = biblioitems.biblionumber)
where items.itype=<<Type de document|itemtypes>>
group by items.itemnumber
order by items.itemcallnumber
Liste des documents selon un nombre de jours de retard que vous devez indiquer dans un filtre lors de l’exécution du rapport.
SELECT
items.barcode as "Code barres",
biblio.title as "Titre",
items.itemcallnumber as "Cote",
items.replacementprice as "Prix de remplacement",
concat(borrowers.firstname,' ',borrowers.surname) as "Nom de l'emprunteur",
borrowers.borrowernumber,
issues.date_due as 'date de retour',
(TO_DAYS(curdate())-TO_DAYS( date_due)) AS 'jours retards'
FROM items
LEFT JOIN biblioitems on (items.biblioitemnumber=biblioitems.biblioitemnumber)
LEFT JOIN biblio on (biblioitems.biblionumber=biblio.biblionumber)
LEFT JOIN issues on (items.itemnumber=issues.itemnumber)
LEFT JOIN borrowers on (issues.borrowernumber=borrowers.borrowernumber)
WHERE (TO_DAYS(curdate())-TO_DAYS( date_due)) =<<nombre de jours de retard>> and issues.date_due is not null
order by borrowers.surname asc
select
count(statistics.datetime) as 'Total prêt'
from
statistics
left join items on items.itemnumber=statistics.itemnumber
left join course_items ci on ci.itemnumber=statistics.itemnumber
where ci.itemnumber is not null and statistics.type='ISSUE' and statistics.datetime between <<prêt entre le |date>> and <<et le|date>>
Pour ce rapport, vous pouvez vous servir du module Bilans et Statistiques > Circulation et inscrire les paramètres comme ci-dessous.
SELECT
b.cardnumber,
concat(b.firstname,' ',b.surname) as "Nom de l'emprunteur",
i.price as Prix, i.replacementprice as 'Prix de remplacement',
CONCAT('<a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber=',i.biblionumber,'\">',i.barcode,'</a>') AS barcode,
bib.title as Titre,
(TO_DAYS(curdate())-TO_DAYS(ni.date_due)) AS 'Nombre de jours de retard',
format(a.amountoutstanding,2) as 'Amende pour le document'
FROM accountlines a
LEFT JOIN borrowers b ON ( b.borrowernumber = a.borrowernumber )
LEFT JOIN items i ON ( a.itemnumber = i.itemnumber )
LEFT JOIN biblio bib ON ( i.biblionumber = bib.biblionumber )
LEFT JOIN ( SELECT * FROM issues) ni ON ( ni.itemnumber = i.itemnumber AND ni.borrowernumber = a.borrowernumber )
WHERE
a.amountoutstanding > 0 and b.categorycode=<<Catégorie usager|categorycode>> AND (TO_DAYS(curdate())-TO_DAYS(ni.date_due)) >=<<Nombre de jours de retard de plus de>>
GROUP BY a.description
ORDER BY b.surname asc
select b.title,
al.timestamp,
al.action,
concat(bo.surname,' ', bo.firstname) as 'Utilisateur qui a fait action',
i.barcode,
concat(borrowers.surname,' ', borrowers.firstname) as 'Utilisateur'
from action_logs al
left join items i on al.info=i.itemnumber
left join biblioitems bi on i.biblioitemnumber=bi.biblioitemnumber
left join biblio b on b.biblionumber=bi.biblionumber
left join borrowers bo on bo.borrowernumber=al.user
left join borrowers borrowers on borrowers.borrowernumber=al.object
where module='circulation' and i.biblionumber=<<Numéro notice>>
select s.datetime as 'Date transaction',
branch as Site,
biblio.title as Titre,
itemcallnumber as Cote,
barcode as Codebarre,
i.itype as 'Type de document',
i.location as Localisation
from statistics s
left join borrowers b on b.borrowernumber=s.borrowernumber
left join items i on i.itemnumber=s.itemnumber
left join biblioitems bi on bi.biblioitemnumber=i.biblioitemnumber
left join biblio on biblio.biblionumber=bi.biblionumber
where s.type='renew' and b.cardnumber=<<Numéro de carte>>
order by datetime desc
SELECT b.title as Titre,
b.author as Auteur,
b.copyrightdate as Date,
i.itemcallnumber as Cote,
i.barcode as Codebarres,
i.datelastborrowed as 'Date dernier prêt',
i.issues as 'Total prêt',
i.dateaccessioned as 'Date création exemplaire'
FROM items i
LEFT JOIN biblio b USING (biblionumber)
LEFT JOIN issues USING (itemnumber)
WHERE i.itype=<<Type de document|itemtypes>> and issues.issuedate IS NULL AND i.datelastborrowed < DATE_SUB(CURDATE(), INTERVAL <<Nombre années>> YEAR)
limit 10000
SELECT
borrowers.surname as Nom,
borrowers.firstname as Prénom,
borrowers.cardnumber as 'Numéro carte',
reserves.reservedate AS 'date réservation',
reserves.priority as priorité,
CONCAT('<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=',biblio.biblionumber,'">',biblio.title,'</a>') AS Titre,
biblio.author as Auteur,
GROUP_CONCAT(items.barcode,'-',IF(r2.found IS NOT NULL,'reserved',IF(onloan IS NOT NULL,'en prêt',IF(notforloan!=0,'notforloan',IF(itemlost!=0,'itemlost','disponible')))) SEPARATOR ' | ') AS 'Code barre - statut',
IF(reserves.itemnumber IS NULL, 'Prochain exemplaire disponible',barcode) AS 'Exemplaire spécifique'
FROM reserves
LEFT JOIN borrowers USING (borrowernumber)
LEFT JOIN biblio USING (biblionumber)
LEFT JOIN biblioitems USING (biblionumber)
LEFT JOIN items USING (biblionumber)
LEFT JOIN reserves r2 ON r2.itemnumber=items.itemnumber
WHERE (reserves.found IS NULL OR reserves.found != 'W')
GROUP BY reserves.reserve_id
ORDER BY Titre
limit 1000
select
concat(borrowers.surname,', ',borrowers.firstname) as 'Nom du responsable',
borrowers.cardnumber,
concat(borrowers2.surname,', ',borrowers2.firstname) as 'Nom usager',
branches.branchname as 'site de la transaction',
date as 'Date transaction',
CASE
WHEN credit_type_code='C' then 'Credit'
WHEN credit_type_code='FOR' then 'Amnistie'
WHEN credit_type_code='W' then 'Amnistie'
WHEN debit_type_code='F' then 'Amende'
WHEN debit_type_code='FU' then 'Amende - Longue période'
WHEN debit_type_code='PAY' then 'Paiement'
WHEN debit_type_code='A' then 'Frais de gestion'
WHEN debit_type_code='M' then 'Divers'
WHEN debit_type_code='L' then 'Item perdu'
WHEN debit_type_code='N' then 'Nouvelle carte'
ELSE
'VALEUR INCONNUE'
end as TypeTransaction,
format(amount,2) as 'Montant',
accountlines.note,
accountlines.payment_type as 'Type de paiement',
CONCAT('<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=',b.biblionumber,'\"target="_blank">',b.title,'</a>') as 'Titre de la notice',
items.barcode as 'Code à barres',
items.itype as 'Type de document'
FROM accountlines
LEFT JOIN borrowers ON (accountlines.manager_id=borrowers.borrowernumber)
LEFT JOIN borrowers borrowers2 ON (accountlines.borrowernumber=borrowers2.borrowernumber)
left join branches on (branches.branchcode =borrowers.branchcode )
left join items on accountlines.itemnumber=items.itemnumber
left join biblioitems bi on items.biblioitemnumber=bi.biblioitemnumber
left join biblio b on bi.biblionumber=b.biblionumber
where date(date) between <<Date transaction entre le|date>> and <<et le |date>> and branches.branchcode=<<Site transaction|branches>>
order by date asc, branches.branchname
select
format(sum(amount),2) as Total,
accountlines.payment_type as 'Type de paiement'
FROM accountlines
LEFT JOIN borrowers ON (accountlines.manager_id=borrowers.borrowernumber)
LEFT JOIN borrowers borrowers2 ON (accountlines.borrowernumber=borrowers2.borrowernumber)
left join branches on (branches.branchcode =borrowers.branchcode )
left join items on accountlines.itemnumber=items.itemnumber
left join biblioitems bi on items.biblioitemnumber=bi.biblioitemnumber
left join biblio b on bi.biblionumber=b.biblionumber
where accounttype='PAY' and date(date) between <<Date transaction entre le|date>> and <<et le |date>> and branches.branchcode=<<Site transaction|branches>>
group by accountlines.payment_type
order by date asc, branches.branchname
SELECT
statistics.type,
statistics.itemtype,
statistics.datetime,
statistics.borrowernumber,
items.barcode, biblio.title
FROM statistics
left join items on statistics.itemnumber=items.itemnumber
left join biblioitems on items.biblioitemnumber=biblioitems.biblioitemnumber
left join biblio on items.biblionumber = biblio.biblionumber
WHERE statistics.type='localuse'
SELECT biblionumber, biblio.title, biblio.author
FROM biblio_metadata
left JOIN biblio ON (biblio_metadata.biblionumber = biblio.biblionumber)
WHERE ExtractValue(metadata, "//datafield[@tag=<< Zone (XXX)>>]/subfield[@code=<<Sous-zone (Y)>>]")
LIKE <<Terme recherché (utiliser les % comme troncature)>>
Ce rapport liste tous les documents d’une localisation (étagère) précise.
Remarque : Ce rapport vous montre aussi qu’il est possible d’utiliser les valeurs autorisées pour poser une question lors de l’exécution du rapport.
Colonnes affichées :
SELECT
biblio.biblionumber,biblio.author,biblio.title,biblio.copyrightdate,items.location,items.itemcallnumber,items.barcode,items.notforloan
FROM items
LEFT JOIN biblioitems on (items.biblioitemnumber=biblioitems.biblioitemnumber)
LEFT JOIN biblio on (biblioitems.biblionumber=biblio.biblionumber)
where
location = <<Localisation|LOC>>;
Exemple visuel
ATTENTION! La table deletedbiblio, sur laquelle ce rapport est construit, ne comprend que les notices supprimées des derniers 365 jours.
SELECT
CASE SUBSTR(metadata,INSTR(metadata, "<leader>")+8+6,2)
WHEN 'am' THEN 'Livre'
WHEN 'as' THEN 'Périodiques'
WHEN 'cm' THEN 'Musique notée'
WHEN 'em' THEN 'Carte'
WHEN 'gm' THEN 'Média projeté'
WHEN 'im' THEN 'Enregistrement non-musical'
WHEN 'jm' THEN 'Enregistrement musical'
WHEN 'mm' THEN 'Fichier informatique'
WHEN 'rm' THEN 'Artefact 3D'
WHEN 'tm' THEN 'Manuscrit'
ElSE 'Type inconnu' END
AS Type, count(DISTINCT biblioitems.biblionumber) AS 'Nombre de notices'
FROM biblioitemsLEFT JOIN biblio_metadata on (biblio_metadata.biblionumber=biblioitems.biblionumber)
GROUP BY Type
SELECT biblio.title as Titre, items.itemcallnumber as Cote, items.biblionumber as 'Numéro notice'
FROM items
LEFT JOIN biblioitems on (items.biblioitemnumber=biblioitems.biblioitemnumber)
LEFT JOIN biblio on (biblioitems.biblionumber=biblio.biblionumber)
WHERE items.itemcallnumber >= <<cote dewey entre>> AND items.itemcallnumber <= <<et cote dewey>>
limit 1000
select i.biblionumber as 'Numéro de notice',
i.barcode as Codebarres,
b.author as 'Auteur',
b.title as Titre,
b.copyrightdate as 'Date copyright'
from deleteditems i
left join deletedbiblio b on i.biblionumber=b.biblionumber
where date(i.timestamp) between <<exemplaires supprimés entre le (AAAA-MM-JJ)>> AND <<et le (AAAA-MM-JJ)>>
select biblio.title as Titre,
cr.course_number as 'Numéro cours',
cr.course_name as 'Nom du cours',
concat(b.firstname,' ',b.surname) as 'Nom du professeur',
i.location as Localisation,
i.barcode as 'Code barres',
i.itemcallnumber as Cote
from courses cr
left join course_instructors ci on cr.course_id=ci.course_id
left join borrowers b on ci.borrowernumber=b.borrowernumber
left join course_reserves on cr.course_id=course_reserves.course_id
left join course_items on course_reserves.ci_id=course_items.ci_id
left join items i on course_items.itemnumber=i.itemnumber
left join biblioitems bi on bi.biblioitemnumber=i.biblioitemnumber
left join biblio on biblio.biblionumber=bi.biblionumber
order by cr.course_name
Select
biblio.biblionumber,
substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) as 'Langue 008 35-37',
ExtractValue(metadata,'//datafield[@tag="041"]/subfield[@code="a"]') as 'Langue 041 $a',
ExtractValue(metadata,'//datafield[@tag="041"]/subfield[@code="b"]') as 'Langue 041 $b',
ExtractValue(metadata,'//datafield[@tag="942"]/subfield[@code="c"]') as 'Type Koha',
ExtractValue(metadata,'//datafield[@tag="980"]/subfield[@code="m"]') as 'Type Manitou',
items.itype as 'ItemType',
items.itemcallnumber as 'Cote',
concat(replace(ExtractValue(metadata,'//datafield[@tag="245"]/subfield[@code="a"]'),'/',''),' ', replace(ExtractValue(metadata,'//datafield[@tag="245"]/subfield[@code="b"]'),'/','')) as 'Titre'
FROM items
LEFT JOIN biblioitems on (items.biblioitemnumber=biblioitems.biblioitemnumber)
LEFT JOIN biblio on (biblioitems.biblionumber=biblio.biblionumber)
LEFT JOIN biblio_metadata on (biblio_metadata.biblionumber=biblio.biblionumber)
WHERE
substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) = ' '
LIMIT 10000
Select
biblio.biblionumber as 'Notice',
substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) as 'Langue 008 35-37',
ExtractValue(metadata,'//datafield[@tag="041"]/subfield[@code="a"]') as 'Langue 041 $a',
ExtractValue(metadata,'//datafield[@tag="041"]/subfield[@code="b"]') as 'Langue 041 $b',
ExtractValue(metadata,'//datafield[@tag="942"]/subfield[@code="c"]') as 'Type Koha',
ExtractValue(metadata,'//datafield[@tag="980"]/subfield[@code="m"]') as 'Type Manitou',
items.itype as 'ItemType',
items.itemcallnumber as 'Cote',
concat(replace(ExtractValue(metadata,'//datafield[@tag="245"]/subfield[@code="a"]'),'/',''),' ', replace(ExtractValue(metadata,'//datafield[@tag="245"]/subfield[@code="b"]'),'/','')) as 'Titre'
FROM items
LEFT JOIN biblioitems on (items.biblioitemnumber=biblioitems.biblioitemnumber)
LEFT JOIN biblio on (biblioitems.biblionumber=biblio.biblionumber)
LEFT JOIN biblio_metadata on (biblio_metadata.biblionumber=biblio.biblionumber)
where substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) = <<Code 008>>
OR ExtractValue(metadata,'//datafield[@tag="041"]/subfield[@code="b"]') LIKE <<Code 041b>>
OR ExtractValue(metadata,'//datafield[@tag="041"]/subfield[@code="a"]') LIKE <<Code 041a>>
LIMIT 5000
Select
biblio.biblionumber as 'Notice',
substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) as 'Langue 008 35-37',
ExtractValue(metadata,'//datafield[@tag="041"]/subfield[@code="a"]') as 'Langue 041 $a',
ExtractValue(metadata,'//datafield[@tag="041"]/subfield[@code="b"]') as 'Langue 041 $b',
ExtractValue(metadata,'//datafield[@tag="942"]/subfield[@code="c"]') as 'Type Koha',
ExtractValue(metadata,'//datafield[@tag="980"]/subfield[@code="m"]') as 'Type Manitou',
items.itype as 'ItemType',
items.itemcallnumber as 'Cote',
concat(replace(ExtractValue(metadata,'//datafield[@tag="245"]/subfield[@code="a"]'),'/',''),' ', replace(ExtractValue(metadata,'//datafield[@tag="245"]/subfield[@code="b"]'),'/','')) as 'Titre'
FROM items
LEFT JOIN biblioitems on (items.biblioitemnumber=biblioitems.biblioitemnumber)
LEFT JOIN biblio on (biblioitems.biblionumber=biblio.biblionumber)
LEFT JOIN biblio_metadata on (biblio_metadata.biblionumber=biblio.biblionumber)
where substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) <> 'FRE'
AND substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) <> 'ENG'
AND substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) <> 'SPA'
AND substring(ExtractValue(metadata,'//controlfield[@tag="008"]'),36,3) <> ' '
LIMIT 5000
select group_concat(CONCAT('<a href=\"/cgi-bin/koha/authorities/detail.pl?authid=',authid,'\"target="_blank">',authid,'</a>') separator ', ') AS Identifiant,
GROUP_CONCAT(DISTINCT ExtractValue(marcxml,'//datafield[@tag="040"]/subfield[@code="a"]') SEPARATOR ' , ') as '040$a',
GROUP_CONCAT(DISTINCT ExtractValue(marcxml,'//datafield[@tag="970"]/subfield[@code="a"]') SEPARATOR ' , ') as '970$a',
concat('<a href="/cgi-bin/koha/authorities/authorities-home.pl?op=do_search&type=intranet&marclist=all&and_or=and&operator=contains&value=',extractvalue(marcxml,"//datafield[@tag=<<Étiquette de la vedette (dans la clause SELECT)>>]/subfield[@code>='a']"),'\"target=_blank">',
extractvalue(marcxml,"//datafield[@tag=<<Étiquette de la vedette (dans la clause SELECT)>>]/subfield[@code>='a']"),'</a>') AS Vedette
from auth_header
where extractvalue(marcxml,"//datafield[@tag=<<Étiquette de la vedette (dans la clause WHERE)>>]/subfield[@code>='a']")!=''
group by extractvalue(marcxml,"//datafield[@tag=<<Étiquette de la vedette (dans la clause GROUP BY)>>]/subfield[@code>='a']")
having count(extractvalue(marcxml,"//datafield[@tag=<<Étiquette de la vedette (dans la clause HAVING)>>]/subfield[@code>='a']"))>1
Consultez la vidéo ci-dessous pour savoir comment utiliser ce rapport.

SELECT GROUP_CONCAT(CONCAT('<a href=\"/cgi-bin/koha/authorities/authorities-home.pl?op=do_search&type=intranet&marclist=all&and_or=and&operator=contains&value=',authid,'\">',authid,'</a>') SEPARATOR ', ') AS autorité,
CONCAT('<a href=\"/cgi-bin/koha/authorities/merge.pl?authid=',MAX(authid),'&authid=',MIN(authid),'\" target="_blank">Fusion</a>') AS Fusion, GROUP_CONCAT(authtypecode SEPARATOR ',') as type,
concat(
ExtractValue(`marcxml`,'//datafield[@tag="100"]/*'), -- Nom de personne
ExtractValue(`marcxml`,'//datafield[@tag="110"]/*'), -- Collectivités
ExtractValue(`marcxml`,'//datafield[@tag="111"]/*'), -- Réunion/Congrés
ExtractValue(`marcxml`,'//datafield[@tag="130"]/*'), -- Titre uniforme
ExtractValue(`marcxml`,'//datafield[@tag="148"]/*'), -- Sub chrono
ExtractValue(`marcxml`,'//datafield[@tag="150"]/*'), -- Sujet
ExtractValue(`marcxml`,'//datafield[@tag="151"]/*'), -- Sub géo
ExtractValue(`marcxml`,'//datafield[@tag="155"]/*') -- Genre forme
) main_heading
FROM auth_header
GROUP BY marc HAVING count(authid) > 1
ORDER BY marc limit 10000
Aperçu : Le lien dans la colonne Fusion amène directement à la page de fusion des autorités
Ce rapport va chercher dans la notice bibliographique si un champ 650 est rempli et s’il y a également le $9 qui est rempli. Si le $9 est vide (autorité non liée), le numéro de la notice va s’afficher dans la colonne « Modifier notice » et dans la colonne « Vedettes, il y aura le contenu de la zone 650$a.
SELECT
biblioitems.biblionumber,
ExtractValue(metadata,'//datafield[@tag="650"]/subfield[@code="a"]') AS Vedettes
FROM biblioitems
left join items on biblioitems.biblioitemnumber=items.biblioitemnumber
LEFT JOIN biblio_metadata on (biblio_metadata.biblionumber=biblioitems.biblionumber)
WHERE length(ExtractValue(metadata, '//datafield[@tag="650"]/subfield[@code="a"]')) != 0
AND length(ExtractValue(metadata, '//datafield[@tag="650"]/subfield[@code="9"]')) = 0
ORDER BY Vedettes
SELECT
bm.biblionumber,
ExtractValue(metadata,'//datafield[@tag="100"]/subfield[@code="a"]') AS Auteur100
FROM biblio_metadata bm
left join items on bm.biblionumber=items.biblionumber
WHERE length(ExtractValue(metadata, '//datafield[@tag="100"]/subfield[@code="a"]')) != 0
AND length(ExtractValue(metadata, '//datafield[@tag="100"]/subfield[@code="9"]')) = 0
group by bm.biblionumber
ORDER BY Auteur100
SELECT
bm.biblionumber,
ExtractValue(metadata,'//datafield[@tag="110"]/subfield[@code="a"]') AS Auteur110
FROM biblio_metadata bm
left join items on bm.biblionumber=items.biblionumber
WHERE length(ExtractValue(metadata, '//datafield[@tag="110"]/subfield[@code="a"]')) != 0
AND length(ExtractValue(metadata, '//datafield[@tag="110"]/subfield[@code="9"]')) = 0
group by bm.biblionumber
ORDER BY Auteur110
SELECT
bm.biblionumber,
ExtractValue(metadata,'//datafield[@tag="700"]/subfield[@code="a"]') AS Auteur700
FROM biblio_metadata bm
left join items on bm.biblionumber=items.biblionumber
WHERE length(ExtractValue(metadata, '//datafield[@tag="700"]/subfield[@code="a"]')) != 0
AND length(ExtractValue(metadata, '//datafield[@tag="700"]/subfield[@code="9"]')) = 0
group by bm.biblionumber
ORDER BY Auteur700
SELECT
bm.biblionumber,
ExtractValue(metadata,'//datafield[@tag="710"]/subfield[@code="a"]') AS Auteur700
FROM biblio_metadata bm
left join items on bm.biblionumber=items.biblionumber
WHERE length(ExtractValue(metadata, '//datafield[@tag="710"]/subfield[@code="a"]')) != 0
AND length(ExtractValue(metadata, '//datafield[@tag="710"]/subfield[@code="9"]')) = 0
group by bm.biblionumber
ORDER BY Auteur710
Il y a 3 choix possible dans la préférence système :
Si vous choisissez suivre anonymement, vous n’aurez pas accès au numéro de l’utilisateur qui a cliqué sur le lien s’il était connecté. Si vous choisissez Suivre, le numéro de l’utilisateur sera enregistré s’il clique sur le lien lorsqu’il est connecté à son compte.
select biblionumber as 'numéro notice',itemnumber as 'numéro exemplaire',url, count(timeclicked) as 'Total'
from linktracker
where timeclicked between <<lien cliqué entre le|date>> and <<et le|date>>
group by url
SELECT
biblio.biblionumber,
items.itemcallnumber as Cote,
biblio.title as Titre,
authorised_values.lib as Statut
FROM biblio
LEFT JOIN items on (items.biblionumber=biblio.biblionumber)
left join biblioitems on (biblioitems.biblionumber=biblio.biblionumber)
LEFT JOIN authorised_values ON items.notforloan = authorised_values.authorised_value
where items.homebranch=<<Site permanent de l'exemplaire|branches>> and items.notforloan=<<statut de perte|NOT_LOAN>> and authorised_values.category="not_loan"
group by biblio.biblionumber
order by items.itemcallnumber asc
limit 10000
SELECT COUNT(*) AS 'Nombre de notices' FROM biblio
select biblio.biblionumber,
biblio.title,
items.itemnumber,
biblioitems.url,
substring(ExtractValue(metadata,'//leader'),6,1)
from biblioitems
left join items on items.biblioitemnumber=biblioitems.biblioitemnumber
left join biblio on biblioitems.biblionumber=biblio.biblionumber
LEFT JOIN biblio_metadata on (biblio_metadata.biblionumber=biblio.biblionumber)
where substring(ExtractValue(metadata,'//leader'),6,1)='d'
limit 10000
SELECT authid as Numéro,
datecreated as 'Date création', authtypecode as Type, concat(
ExtractValue(`marcxml`,'//datafield[@tag="100"]/*'), -- Nom de personne
ExtractValue(`marcxml`,'//datafield[@tag="110"]/*'), -- Collectivités
ExtractValue(`marcxml`,'//datafield[@tag="111"]/*'), -- Réunion/Congrés
ExtractValue(`marcxml`,'//datafield[@tag="130"]/*'), -- Titre uniforme
ExtractValue(`marcxml`,'//datafield[@tag="148"]/*'), -- Sub chrono
ExtractValue(`marcxml`,'//datafield[@tag="150"]/*'), -- Sujet
ExtractValue(`marcxml`,'//datafield[@tag="151"]/*'), -- Sub géo
ExtractValue(`marcxml`,'//datafield[@tag="155"]/*') -- Genre forme
) main_heading
FROM `auth_header`
ORDER BY authtypecode, main_heading
SELECT biblio.biblionumber, biblio.title as Titre, biblio.author as Auteur
FROM biblio_metadata
left JOIN biblio ON (biblio_metadata.biblionumber = biblio.biblionumber)
WHERE ExtractValue(metadata, "//datafield[@tag=<< Zone marc (XXX)>>]/subfield[@code=<<sous-zone (Y)>>]")
LIKE <<Terme recherché (utiliser % pour troncature)>>
SELECT CONCAT('<a href=\"/cgi-bin/koha/authorities/detail.pl?authid=',authid,'\">',authid,'</a>') AS 'Numéro autorité',
ExtractValue(marcxml,'//datafield[@tag="150"]/subfield[@code="a"]') as '150a',
ExtractValue(marcxml,'//datafield[@tag="100"]/subfield[@code="a"]') as '100a',
ExtractValue(marcxml,'//datafield[@tag="110"]/subfield[@code="a"]') as '110a',
ExtractValue(marcxml,'//datafield[@tag="111"]/subfield[@code="a"]') as '111a',
ExtractValue(marcxml,'//datafield[@tag="130"]/subfield[@code="a"]') as '130a',
ExtractValue(marcxml,'//datafield[@tag="151"]/subfield[@code="a"]') as '151a',
ExtractValue(marcxml,'//datafield[@tag="155"]/subfield[@code="a"]') as '155a',
ExtractValue(marcxml,'//datafield[@tag="040"]/subfield[@code="a"]') as '040a',
ExtractValue(marcxml,'//datafield[@tag="970"]/subfield[@code="a"]') as '970a'
FROM auth_header
WHERE ExtractValue(marcxml, "//datafield[@tag=<< Zone marc (XXX)>>]/subfield[@code=<<sous-zone (Y)>>]")
LIKE <<Terme recherché (utiliser % pour troncature)>>
SELECT count(s.datetime) AS Total, b.title as Titre, b.author as Auteur,
b.biblionumber
FROM statistics s
JOIN items i ON (i.itemnumber=s.itemnumber)
LEFT JOIN biblio b ON (b.biblionumber=i.biblionumber)
LEFT JOIN biblio_metadata bi on (b.biblionumber=bi.biblionumber)
WHERE ExtractValue(metadata,'//datafield[@tag="650"]/*') like <<Numéro autorité (entourés de %) >> and DATE(s.datetime) > DATE_SUB(CURRENT_DATE(),INTERVAL 12 MONTH)
AND DATE(s.datetime)<=CURRENT_DATE() AND
s.itemnumber IS NOT NULL AND s.type IN ('issue','renew')
GROUP BY b.biblionumber
ORDER BY Total DESC
limit 100
select biblio.title as Titre,
biblio.biblionumber as 'Numéro notice',
itemcallnumber as Cote,
materials as Matériels,barcode as Codebarre,
itype as 'Type de document'
from items
left join biblioitems on items.biblioitemnumber=biblioitems.biblioitemnumber
left join biblio on biblio.biblionumber=items.biblionumber
where materials ='1' or materials='2' or materials='3' or materials='4' or materials='5' or materials='6' or materials='7'
order by materials asc
limit 10000

SELECT
CONCAT('<a href="/cgi-bin/koha/authorities/detail.pl?authid=',authid,'\" target="_blank" rel="noopener">',authid,'</a>') as 'Notice',
authtypecode as 'Type autorité',
CONCAT (
extractvalue(marcxml,"//datafield[@tag=150]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=100]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=110]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=148]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=155]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=130]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=151]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=185]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=180]/subfield[@code='a']"),' ',
extractvalue(marcxml,"//datafield[@tag=181]/subfield[@code='a']")) as 'Autorité',
ExtractValue(marcxml,'//controlfield[@tag="005"]') as 'Zone 005',
extractvalue(marcxml,"//datafield[@tag=970]/subfield[@code='a']") as 'Zone 970$a'
from auth_header
where extractvalue(marcxml,"//datafield[@tag=970]/subfield[@code='a']")='BTA'
LIMIT 10000
SELECT
aqorders.ordernumber as ' No commande',
aqorders.invoiceid as 'No facture',
aqbooksellers.name as 'Nom du fournisseur',
aqbudgets.budget_code as 'Code',
aqorders.basketno as 'Panier',
aqorders.biblionumber as 'No Notice',
biblio.title as 'Titre',
aqorders.ecost as 'Prix estimé commandé',
aqorders.entrydate as 'Commandé le',
format (aqorders.listprice,2) as 'Prix fournisseur commandé',
aqorders.quantity as 'Quantité commandé',
format (aqorders.unitprice,2) as 'Prix unitaire facturé',
aqorders.quantityreceived as 'Quantité facturée',
format((aqorders.quantityreceived * aqorders.unitprice),2) as 'Total prix facturé',
aqorders.datereceived as 'Reçu le',
aqorders.rrp as 'Prix de remplacement'
FROM aqorders
LEFT JOIN biblio ON aqorders.biblionumber = biblio.biblionumber
LEFT JOIN aqbudgets ON aqorders.budget_id = aqbudgets.budget_id
LEFT JOIN aqbasket ON aqbasket.basketno = aqorders.basketno
LEFT JOIN aqbooksellers ON aqbooksellers.id = aqbasket.booksellerid
where
aqorders.datecancellationprinted is null and aqbudgets.budget_period_id = << Période budgétaire. Ex.: 21>>
order by aqorders.datereceived, aqbudgets.budget_name, aqorders.basketno
LIMIT 5000
Il y a dans ce rapport un filtre sur la date de la commande et un filtre sur le poste budgétaire. Pour connaitre l’identifiant du poste budgétaire, il faut vous rendre dans Acquisitions > Postes budgétaires > Modifier le poste budgétaire. Dans l’url de cette page, il faut repérer le numéro inscrit après budget_id . Ce rapport va vous donner la liste des documents qui ont été commandés et pas encore reçu.
SELECT
biblio.title as 'Titre',
aqorders.entrydate as 'Date commande',
format (aqorders.listprice,2) as 'Prix fournisseur commandé'
FROM aqorders
LEFT JOIN biblio ON aqorders.biblionumber = biblio.biblionumber
LEFT JOIN aqbudgets ON aqorders.budget_id = aqbudgets.budget_id
LEFT JOIN aqbasket ON aqbasket.basketno = aqorders.basketno
LEFT JOIN aqbooksellers ON aqbooksellers.id = aqbasket.booksellerid
where
aqorders.unitprice='0.00' and aqorders.datecancellationprinted is null and aqbudgets.budget_id= <<identifiant du poste budgétaire>> and aqorders.biblionumber is not null and aqorders.entrydate between <<date de la commande entre|date>> and <<et le|date>>
order by aqorders.datereceived, aqbudgets.budget_name, aqorders.basketno
LIMIT 5000
select
CONCAT('<a href="/cgi-bin/koha/acqui/booksellers.pl?booksellerid=',a.id,'\"target="_blank">',a.name,'</a>') as Fournisseur
from
aqbooksellers a
left join aqbasket ab on a.id=ab.booksellerid
where basketno is null
Il faut inscrire à la place du texte en rouge, l’identifiant du budget. Pour connaitre l’identifiant du budget, il faut cliquer sur le budget dans la page d’accueil des budgets et dans l’url affiché vous aurez le texte suivant : budget_period_id=. Le chiffre qui est après le signe = est l’identifiant du budget.
Lors de l’exécution du rapport le nom du poste budgétaire vous sera demandé.
Seulement le titre et l’auteur apparaissent dans le tableau et le titre est cliquable pour ouvrir la notice à l’OPAC. En exportant ce tableau dans un fichier excel ou word, vous pourriez diffuser l’information à vos professeurs par exemple.
SELECT
CONCAT('<a href=\"', IF(CHAR_LENGTH(systempreferences.value),
CONCAT('http://', systempreferences.value), ''), '/cgi-bin/koha/opac-detail.pl?biblionumber=',biblio.biblionumber,'\">',biblio.title,'</a>') AS Titre,
biblio.author as Auteur
FROM systempreferences, biblio
LEFT JOIN aqorders ON aqorders.biblionumber = biblio.biblionumber
LEFT JOIN aqbudgets ON aqorders.budget_id = aqbudgets.budget_id
LEFT JOIN aqbasket ON aqbasket.basketno = aqorders.basketno
where
systempreferences.variable='OPACBaseURL' and
aqbudgets.budget_period_id='IDENTIFIANT_BUDGET' and
aqorders.datecancellationprinted is null and aqorders.biblionumber is not null and aqbudgets.budget_name=<<Poste budgétaire>>
LIMIT 5000
Pour connaitre l’identifiant du budget, il faut cliquer sur le budget dans la page d’accueil des budgets et dans l’url affiché vous aurez le texte suivant : budget_period_id=. Le chiffre qui est après le signe = est l’identifiant du budget.
Ce rapport peut exclure également deux types de document, à savoir par exemple les DVD et les CD, il faut pour cela changer le texte TYPE_DOC par les codes des types de document que vous trouverez dans le tableau des Types de documents dans le module Administration. Si vous n’avez qu’un seul type de document à exclure, il faut alors supprimer cette partie du code and biblioitems.itemtype NOT LIKE ‘TYPE_DOC’.
SELECT
aqbooksellers.name as 'Nom du fournisseur',
SUM(aqorders.quantityreceived) as 'Quantité facturée',
format(sum(aqorders.quantityreceived * aqorders.unitprice),2) as 'Total prix facturé'
FROM aqorders
LEFT JOIN biblioitems ON aqorders.biblionumber = biblioitems.biblionumber
LEFT JOIN aqbudgets ON aqorders.budget_id = aqbudgets.budget_id
LEFT JOIN aqbasket ON aqbasket.basketno = aqorders.basketno
LEFT JOIN aqbooksellers ON aqbooksellers.id = aqbasket.booksellerid
where
aqorders.datecancellationprinted is null and aqbudgets.budget_period_id = << Période budgétaire. Ex.: 51>> and biblioitems.itemtype NOT LIKE 'TYPE_DOC' and biblioitems.itemtype NOT LIKE 'TYPE_DOC'
group by aqbooksellers.name
order by aqbooksellers.name
SELECT
aqbudgets.budget_name as 'Poste budgétaire',
CONCAT('<a href="/cgi-bin/koha/acqui/basket.pl?basketno=',aqbasket.basketno,'\"target="_blank">',aqbasket.basketno,'</a>') as Panier,
concat(borrowers.firstname,' ',borrowers.surname) as 'Panier par',
CONCAT('<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=',biblio.biblionumber,'\"target="_blank">',biblio.title,'</a>') as 'Titre',
items.itemcallnumber as Cote,
aqorders.currency as Devise,
format (aqorders.listprice,2) as 'Prix fournisseur commandé',
format (aqorders.rrp,2) as 'Prix de remplacement',
format (aqorders.ecost,2) as 'Coût budgeté',
aqorders.quantity as Quantité,
aqorders.quantity * aqorders.rrp as 'Total',
format((aqorders.quantity * aqorders.ecost),2) as 'Coût total',
aqorders.entrydate as 'Date entrée',
aqorders.datereceived as 'Reçu le',
aqorders.order_internalnote as 'Note interne',
aqorders.order_vendornote as 'Note au fournisseur'
FROM aqorders
LEFT JOIN biblio ON aqorders.biblionumber = biblio.biblionumber
left join aqorders_items ai on ai.ordernumber = aqorders.ordernumber
left join items on items.itemnumber = ai.itemnumber
LEFT JOIN aqbudgets ON aqorders.budget_id = aqbudgets.budget_id
LEFT JOIN aqbasket ON aqbasket.basketno = aqorders.basketno
LEFT JOIN aqbooksellers ON aqbooksellers.id = aqbasket.booksellerid
LEFT JOIN aqbudgetperiods ON aqbudgetperiods.budget_period_id=aqbudgets.budget_period_id
LEFT JOIN borrowers on borrowers.borrowernumber=aqbasket.authorisedby
where aqorders.datecancellationprinted is null and
aqbudgets.budget_name like <<nom du poste budgétaire>> and aqbudgetperiods.budget_period_active='1'
order by aqbasket.basketno
LIMIT 5000
Ce rapport aide à repérer les notices dont le champ Requérant est rempli. Le champ Requérant a été rajouté dans la grille de catalogage dans la zone 952, dans l’exemple cette sous-zone se nomme D. Si votre champ porte une autre lettre, il faut changer le code en rouge dans la requête ci-dessous.
Select
b.biblionumber,
b.title 'Titre',
b.author as Auteur,
itemtypes.description as 'Type de document',
authorised_values.lib as Localisation,
av.lib as Statut,
ExtractValue(items.more_subfields_xml,'//datafield[@tag="999"]/subfield[@code="D"]') as Requérant
from items
left join biblioitems bi on bi.biblioitemnumber=items.biblioitemnumber
left join biblio b on b.biblionumber=bi.biblionumber
left join itemtypes on itemtypes.itemtype=items.itype
LEFT JOIN authorised_values ON items.location = authorised_values.authorised_value
left join authorised_values av on items.notforloan = av.authorised_value
where authorised_values.category='loc' and av.category='not_loan' and ExtractValue(items.more_subfields_xml,'//datafield[@tag="999"]/subfield[@code="D"]')<>'' and ExtractValue(items.more_subfields_xml,'//datafield[@tag="999"]/subfield[@code="D"]') like <<Nom requerant>>
order by Requerant asc, b.title asc
limit 10000
Ce rapport donne la liste des usagers dont le dossier est expiré pour une année choisie. Ces usagers n’auront pas de prêt en cours.
SELECT
concat(surname,' ', firstname) as Usager,
cardnumber as 'Numéro carte'
FROM borrowers
WHERE borrowernumber
NOT IN (SELECT borrowernumber FROM issues)
AND YEAR(dateexpiry) = <<Année>>
SELECT
concat(surname,' ', firstname) as Usager,
cardnumber as 'Numéro carte',
branchcode as Site,
dateexpiry as 'Date expiration'
FROM borrowers
WHERE ' ' IN (email)
Ce rapport vous donnera la liste des usagers qui ont un message de circulation ou une note à leur dossier.
SELECT b.cardnumber as 'Numéro carte', b.surname as Nom, b.firstname as Prénom,
b.opacnote as 'Note opac', b.borrowernotes as 'Note intranet', group_concat(DISTINCT m.message separator ', ') AS 'Message de circulation'
FROM borrowers b
LEFT JOIN messages m USING (borrowernumber)
WHERE b.branchcode=<<Branch|branches>> AND ((b.opacnote IS NOT
NULL AND b.opacnote != '') OR (b.borrowernotes IS NOT NULL AND
b.borrowernotes != '') OR (m.message IS NOT NULL AND
m.message != '')) GROUP BY b.borrowernumber ORDER BY b.surname ASC,
b.firstname ASC
SELECT surname as Nom, firstname as Prénom, GROUP_CONCAT(CONCAT('<a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=',borrowers.borrowernumber,'\"target="_blank">',borrowers.borrowernumber,'</a>') SEPARATOR ', ') AS 'Numéro de carte'
FROM borrowers
GROUP BY CONCAT(trim(surname),"/",trim(firstname),"/")
HAVING COUNT(CONCAT(trim(surname),"/",trim(firstname),"/"))>1
select count(*) as Total,
categorycode as Catégorie,
branchcode as Site
from borrowers
group by branchcode,categorycode
Ce rapport donne la liste des fascicules en retard.
8= Arrêté
SELECT serial.subscriptionid as 'Num abonnement',
aqbooksellers.name as Fournisseur,
serial.biblionumber as 'Num notice',
biblio.title as 'Titre',
serial.serialseq as Numérotation,
serial.planneddate as 'Date prévu publication',
serial.publisheddate as '
Date publication',
serial.STATUS as Statut
FROM serial
LEFT JOIN biblio on (serial.biblionumber = biblio.biblionumber)
LEFT JOIN biblioitems on (serial.biblionumber=biblioitems.biblionumber)
LEFT JOIN subscription on (serial.subscriptionid=subscription.subscriptionid)
LEFT JOIN aqbooksellers on (subscription.aqbooksellerid=aqbooksellers.id)
WHERE serial.STATUS=<<Numéro du statut>>
ORDER BY serial.subscriptionid ASC
limit 10000
select
biblio.title as Titre,
sn.label as Modèle,
sn.numberingmethod as Description
from subscription s
left join biblio on s.biblionumber=biblio.biblionumber
left join subscription_numberpatterns sn on sn.id=s.numberpattern
limit 10000
select
biblio.title as Titre,
sn.description
from subscription s
left join biblio on s.biblionumber=biblio.biblionumber
left join subscription_frequencies sn on sn.id=s.periodicity
limit 10000
SELECT
biblio.title AS "Abonnement",
subscription.subscriptionid AS "No. Abonnement",
subscription.callnumber as Cote,
subscription.location AS "Localisation",
subscription.notes AS "Note abonnement",
subscription.internalnotes as 'Note interne',
v.lib as 'Durée de vie'
FROM
subscription
INNER JOIN serial
ON subscription.subscriptionid = serial.subscriptionid
INNER JOIN biblioitems
ON serial.biblionumber = biblioitems.biblionumber
INNER JOIN biblio
ON biblioitems.biblionumber = biblio.biblionumber
INNER join additional_field_values d on (d.record_id=subscription.subscriptionid)
INNER join authorised_values v on (d.value=v.authorised_value)
where v.category='lifespan'
group by subscription.subscriptionid
limit 10000
select
CONCAT('<a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=',s.subscriptionid,'\"target="_blank">',bi.title,'</a>') as 'Consulter abonnement',
s.biblionumber,
cardnumber,
surname,
firstname
from alert
left join borrowers b on b.borrowernumber=alert.borrowernumber
left join subscription s on s.subscriptionid=alert.externalid
left join biblio bi on bi.biblionumber=s.biblionumber
order by bi.title
limit 10000
select * from systempreferences limit 1000;
SELECT cardnumber, firstname, surname, categorycode,
description, flags
FROM borrowers
JOIN user_permissions USING (borrowernumber)
JOIN permissions USING (code)
UNION (
SELECT cardnumber, firstname, surname,
categorycode, 'module-level permissions;
1 is superlibrarian' AS description, flags
FROM borrowers
WHERE flags > 0)
ORDER BY cardnumber ASC
limit 10000
Les recherches effectuées à l’opac sont sauvegardées dans la base de données seulement quand l’utilisateur est connecté à son compte. Cette requête vous permet d’afficher les mots recherchés entre deux dates lorsque les utilisateurs sont connectés
Aperçu des résultats
SELECT
search_history.query_desc as Recherche,
search_history.type as 'Type de notice',
search_history.total as 'Nombre résultat',
search_history.time as Date,
borrowers.branchcode as 'Site utilisateur',
borrowers.categorycode as 'Catégorie utilisateur'
FROM search_history
JOIN borrowers ON (search_history.userid=borrowers.borrowernumber)
JOIN branches ON (borrowers.branchcode=branches.branchcode)
WHERE search_history.time BETWEEN <<Entre le|date>> AND <<et le|date>>
Les recherches effectuées à l’opac sont sauvegardées dans la base de données seulement quand l’utilisateur est connecté à son compte. Cette requête vous permet d’afficher les mots les plus recherchés entre deux dates lorsque les utilisateurs sont connectés
Aperçu du résultat :
SELECT COUNT(*) AS 'Nombre de fois recherché',
query_desc as Recherche
FROM search_history
WHERE search_history.time BETWEEN <<Entre le|date>> AND <<et le|date>>
GROUP BY query_desc
ORDER BY COUNT(*) DESC